null 和undefined的区别

不知道大家有没有试着去打印一下unll和undefined相等‘==’和全等‘===’的结果。结果可能会让一些人疑惑: null==undefined   //true ; null===undefined // false 。为什么会是那样的结果呢?这就得深入去了解两者的使用场景以及自身的一些性质。这样才能更加深刻地理解null和undefined。下面的内容可能会对你理解null和undefined有一定程度的帮助,这将有助于你以后在什么时候会使用它们。

Number转换的值不同,Number(null)输出为0, Number(undefined)输出为NaN;

null表示一个值被定义了,但是这个值是空值

应用场景为以下几个方面:

①作为函数的参数,表示函数的参数不是对象

②作为对象原型链的终点 (Object.getPrototypeOf(Object.prototype  //null))

③定义一个值为null是合理的,但定义为undefined不合理(var name = null)

undefined表示缺少值,即此处应该有值,但是还没有定义

应用场景为以下几个方面:

①变量被声明了还没有赋值,就为undefined

②调用函数时应该提供的参数还没有提供,该参数就等于undefined

③对象没有赋值的属性,该属性的值就等于undefined

④函数没有返回值,默认返回undefined

所以, ECMAScript 规范认为,既然 null 和 undefined 的行为很相似,并且都表示 一个无效的值,那么它们所表示的内容也具有相似性,即有

undefined == null; //true

但 === 会返回 false ,因为全等操作 === 在比较相等性的时候,不会主动转换分项的数据类型,而两者又不属于同一种类型:

undefined === null; //false,类型不相同
undefined !== null;  //true, 类型不相同

用一句话总结两者的区别就是:undefined 表示一个变量自然的、最原始的状态值,而 null 则表示一个变量被人为的设置为空对象,而不是原始状态。所以,在实际使用过程中,为了保证变量所代表的语义,不要对一个变量显式的赋值 undefined,当需要释放一个对象时,直接赋值为 null 即可。

下面来看一道例题来巩固对null和undefined的区别:

let a ={ b:undefined, c:null};
let {b=2,c=3,d=0}= a;
console.log(b,c,d)

大家千万不要觉得答案是2,3,0.其实如果理解上面的内容,这里的答案就非常明显了。

console.log(b,c,d)  // 2 null 0

利用对象解构,让{b=2,c=3,d=0}和a对象匹对。因为对象a中,b是undefined就意味着这里是有值,但还没赋值。此时b=2就能把对象a中的b解构为2;而c是一个null即这里是有值的但定义为空而已,对象解构是a中的c就是有null这样一个值,此时,左边的c=3,重解构是不起效果的,所以c还是null。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值