在<<Javascript 权威指南>>中,undefined常常被解释为:对应的值的缺失,对应以下四种情况:
1. 无赋值 变量被声明了,但没有赋值时,就等于undefined。
2. 属性不存在 引用对象中不存在属性,该属性的值为undefined。
3. 形参未赋值 调用函数时,应该提供的参数没有提供,该参数等于undefined。
4. 函数无返回值 函数没有返回值时,默认返回undefined。
实际上,undefined可以被当做除primitive原始类型和object类型之外的第三种类型:
window下的undefinded属性为undefined类型;这个类型只有一个值:undefined;
null被当做object类型,是因为typeof null === “object”;
而null instatnceof Object === false是因为null处于原型链的顶端,而不是Object.prototype原型节点的子节点;
typeof 通过primitive,object,undefined类型判断 instanceof 通过原型链判断
在<<Speaking Javascript>>中,描述了设计undefined原因:
1. 避免类型转换上的错误:当因为编程疏忽时(声明了变量,却忘记给变量赋值,会引起异常)
Number(null) // 0 Number(undefined) // NaN Boolean(null) // false Boolean(undefined) // NaN
参考:
编程的细节之美——undefined与null的区别 http://www.tuicool.com/articles/B7FFzez
最新评论