undefined 和 null的区别和联系

作者:马小跳 时间:2019-7-25睡不着的凌晨

总结以下undefined 和 null的区别和联系

首先聊一下undefined,学过多门语言的都知道,在这么多种语言里面,都存在null这么一个值的,但是只有JavaScript有undefined,这是因为在最初设计语言的时候,开发者也只设计了null,但是在使用过程中发现一些错误的产生并不是空指针的问题,所以在后面的时间里面就引入了一个有区别与null的值,那就是undefined.

undefined与null的相同点:
  • 都只有一个值
  • 参与判断的时候都返回false
  • 没有方法
undefined与null的不同点:
  • undefined不是关键字,null是关键字
  • typeof null //Object
    typeof undefined //undefined

其实typeof null最后面的结果是Object是JavaScript在设计过程中的一个Bug,因为JavaScript在设计过程中判定是对象的依据是其转换成二进制前三位是0,而null本来就代表的是空指针嘛,自然而然地满足了这个要求,所以判断null类型就是Object;

undefined是window对象,可以打开控制台输入window,把打印地内容拉到最下面,会发现有一个undefined,这说明undefined是window地对象,所以在判断值地时候尽量少去使用undefined地值去判断,因为在全局去查找会影响程序地性能,如果需要的话,可以利用undefined不是关键字地特点,直接var undefined;

  • undefined 表示没有初始化

    null 表示初始化了,只是初始化的值是一个空指针

  • Number(undefined) // NaN

    Number(null) //0

具体使用:

  • 申明变量需要赋值地时候,不知道赋成什么,那就赋成null

  • 判断值是否存在,"===" -->undefined

    判断值是否为空,"===" -->null

  • undefined == null //true
    其实打开控制台打印一下,会发现undefined == false/undefined == true都返回false,null == false/null == true也都返回false,但是就是在判断undefined == null,返回true,我找遍资料也没有明确的说明为什么就是这样,后来才发现,js在判断地时候,就将这一条规则列在了最开始,就是如果判断undefined==null,直接返回true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值