这句Javascript语句如何解释?

在蝴蝶书中阅读到这样一段代码,通过定义is_array函数来区别数组和对象。

var is_array = function(value){
    return value &&
        typeof value === 'object' &&
        value.constructor === Array;
        };

请问这种件的连等如何解释,新人求教。。。

阅读 3.6k
4 个回答
return value &&
typeof value === 'object' &&
value.constructor === Array;

value 如果value为空的话&&的结果是false,就是判断是否有值
typeof 函数返回的是参数类型,数组和对象均返回object,
constructor用来返回对象属性创建的函数,数组的话是Array
只并上前两个的话,是无法判断是不是数组,因为还有对象的可能性。
因此需要最后一个。当3个条件都为true的话,那么其结果便是array。

从前读到后就可以了
&&与表示符,前面表反就直接不会向后判断返回false
||或表示符,前面不表反就直接返回前面的不会向后判断
条件?真:假 ;三元表示符

看不懂这样的就给前面的条件一个个加括号就懂了
(value && typeof value === 'object' )&& value.constructor === Array
一层一层向后执行

==会类型转换,===不会。
比如var a=0;
if(a==false)//成立
if(a===false)//不成立

关键字:短路操作符

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题