null与undefined
什么时候会出现null
- 手动设置变量的值或者对象某一个属性值为null(此时不赋值,会在后面的代码中进行赋值,相当于初始化。)
- 在JS的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。
- js正则表达式的 match方法,如果匹配不到就会返回null。
- 在正则捕获的时候,如果没有捕获到结果,默认也是null。
什么情况会出现undefined
- 在变量提升(预解析)阶段,只声明未定义,默认值就是undefined。
- 在JS的严格模式下(“use strict”),没有明确的主体,this指的就是undefined。
- 函数定义没有返回值(return或者return后面什么也不带),默认的返回值就是undefined。
- 函数定义形参不传值,默认就是undefined。
- 对象没有这个属性名,属性值默认就是undefined。
- 在数组的find方法中,没有找到的情况下是undefined。
- Object.prototype._proto_的值也是undefined。
- 当我们使用?.获取对象属性时候获取不到也是undefined。
- 当我们使用 new Map() 中的get() 获取的键名在Map集合中不存在时,会返回undefined。
null
- null的性质:一个语言关键字
- 作用:用于表示某个值不存在
- 对null使用typeof操作符返回字符串"object",表明可以将null看成一种特殊对象,表示“没有对象”
undefined
- undefined的性质:一个预定义的全局常量,这个常量的初始化值就是undefined
- 对undefined使用typeof操作符返回字符串"undefined",表示这个值是该特殊类型的唯一成员
异同
- ==认为他们相等
- 他们都是假性值
- null表示程序级别、正常或意料之中的没有值
- undefined表示系统级别、意料之外或类似错误的没有值
liang14658fox