不能用array === null 来判断数组为空!!!
博客专区 > lybb_lbb 的博客 > 博客详情
不能用array === null 来判断数组为空!!!
lybb_lbb 发表于8个月前
不能用array === null 来判断数组为空!!!
  • 发表于 8个月前
  • 阅读 22
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

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

共有 人打赏支持
粉丝 0
博文 20
码字总数 7773
×
lybb_lbb
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: