null和undefined原来是这么伴生的

早起在学习时,就知道null和undefined的区别。那么,这不是重点,至于它们的区别已经是众人皆知了,但还是跟大家一起回顾以下吧。

varx=null;

vary=undefined;

数据类型:

object

undefined

相等和严格相等(==和===):

true

false

转换为false:

在判断语句中,这两种均被转换为false

数值:

null转为数值时为0

undefined转为数值时为NaN

昨天在听广播时了解了一些关于这两个对象的伴生原因。

所有的数据保存在计算机内存中是以二进制的形式保存的。js解释器进行编译的时候,有一个规则一个数据转换成二进制时前三位都是“0”,这是用typeof检验时就会返回object。

null转换成二进制时,所有的位置上全部都是0,所以,这是js解释器在开发时存在的一个bug。那么之后当发现了这个情况之后,就添加了undefined。在其他语言中只有unll表示空,但在js中,则出现了这两种值表示空。也就是说,undefined其实是对null的一个补充功能。

用法:

null

函数的参数,表示该函数的参数不是对象;

对象原型链的终点。

undefined

变量生命为赋值为undefined;

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

对象没有赋值的属性,属性值为undefined;

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

本微信号所有内容为前端客用户原创,前端客已获得独家授权,欢迎分享。

如有转载需求请留言征询,对于未经许可私自篡改内容、转载的行为我们保留追究维权的合法权利!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180119G0CH2300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券