在蝴蝶书中阅读到这样一段代码,通过定义is_array函数来区别数组和对象。
var is_array = function(value){
return value &&
typeof value === 'object' &&
value.constructor === Array;
};
请问这种件的连等如何解释,新人求教。。。
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)//不成立