JavaScript中null和undefined的区别
null:
1)是只有一个值(即null)的特殊类型,表示一个空对象引用,我们可以把它理解为一个不存在的对象的占位符。
2)使用typedef检测null返回的是object。(typeof null // object)
3)null转为数值时是0(5+null-------->5)
典型用法:
1)作为函数的参数,表示该函数的参数不是对象。
2)作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype) // null
undefined:
1)是一个没有设置值的变量。
2)使用typedef测试一个没有值的变量会返回undefined。(typeof undefined // undefined)
3)undefined转化为数值时是NaN(5+undefined------------>NaN)
典型用法:
1)变量被声明了,但是没有被赋值时,就等于undefined。
var i; i // undefined
2)调用函数时,应该提供的参数没有提供,该参数等于undefined。
function f(x){console.log(x)}f() // undefined
3)对象没有赋值的属性,该属性的值为undefined。
var o = new Object(); o.p // undefined
4)函数没有返回值时,默认返回undefined。
var x = f(); x // undefined
总结:
1)null表示一个值被定义了,定义为“空值”,undefined表示根本不存在定义。
2)null表示“没有对象”,即此处不应该有值,undefined表示“缺少值”,此处应该有一个值,但是还没有定义。