js中的数据类型
字符串、数字、布尔、数组、对象、Null、Undefined ===全等比较 比较2个相同类型的对象,如果类型不同,就直接返回false,如果类型相同,那就比较具体的值或具体的引用地址var arr=null;if(arr===null){ console.log('arr is null');}arr=undefined;if(arr===null){ console.log('arr is null');}else if(arr===undefined){ console.log('arr is undefined');}//arr赋值一个数组对象arr=[];//if(arr.length==0){if(arr.length===0){ console.log('arr is empty');}
所以在判断数组是否为空时,可以使用以下代码对象在做逻辑判断的时候,如果值为null,undefined,转化boolean值 false
try{ if(!arr||(Object.prototype.toString.call(arr)==='[object Array]'&&arr.length===0)) { console.log('arr is null or empty'); }}cathc(error){ //处理arr未被声明的情况}
null 和 Array 是两种不同的基本数据类型。
为什么array !== null
,其实就是既然arr
是数组,那么就是Array
对象,表象上就是一对中括号,里面有没有值无所谓,那么[]
怎么可能 === null
的呢,或者换个角度,new Array()
怎样可以 === null
的呢。
null代表未声明,undefined代表未定义
比如var arr = [] 这里分两部分 先是var arr 此时声明变量arr arr = [] 这时就是定义arr为数组对象 因为arr被声明过所以不可能为null而arr被定义成空数组,虽然有定义,但原始值是""
(经过提醒,数组的原始值就是[],但在运算的时候会被强转成"") 所以如果用 arr == false的话就会返回true