1、undefined和null的区别-20230614
undefined:
(1)声明了一个变量,但没有赋值
(2)对象属性没有赋值
(3)调用函数没有提供相应的参数
(4)函数没有返回值,默认undefined
null:
(1)实际就是一个空对象
(2)原型链的终点
为什么undefined == null会返回true?
很多人认为是因为它们的布尔值都是false,因为 == 会进行类型转换,所以就会返回true,其实这种说法不是很合理,因为ECMAScript官网原话是这样说的:
值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
与面试官battle的时候直接说:官方文档是这样说的,值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
typeof null // "object" (因为一些以前的原因而不是'null')
typeof undefined // "undefined"
null == undefined // true
null === undefined // false