为什么null的类型是object?
typeof(null)
//返回object。
null
的类型是object
,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null
,只把它当作object
的一种特殊值。后来null
独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null
返回object
就没法改变了。
null和undefined的关系
在if语句中,它们都会被自动转为false
,相等运算符(==
)甚至直接报告两者相等。
if (!undefined) {
console.log('undefined is false');
}
// undefined is false
if (!null) {
console.log('null is false');
}
// null is false
undefined == null
// true
null和undefined的区别
Number(null) // 0
5 + null // 5
Number(undefined) // NaN
5 + undefined // NaN
区别:
null
是一个表示“空”的对象,转为数值时为0
;
undefined
是一个表示"此处无定义"的原始值,转为数值时为NaN
。
在代码书写中,推荐 待使用变量声明 为 var a =null
;
var a=null;
var b;
console.log(a);//null
console.log(b);//undefined
console.log(c);//报错
进而使得其对于是否进行声明有更好的区分。