null 与 undefined
Null类型与Undefined类型是javascript五大基本数据类型中的两种,他们的使用有诸多相似,下面来看看它们的区别于联系。
基本含义
undefined:”未定义”
null:”空对象指针”
是否保留字
undefined:”否”,可以作为标识符,可覆盖
null:”是”
定义
ECMAScipt中的变量是松散类型的,即可以用来保存任何类型的数据。
1 | var Benjamin; |
因null是空对象,所以一般定义存放对象的标识符时,会指定null值
in操作符
1 | console.log(undefined in window);//true |
返回值
返回undefined值的情形:
1)访问未修改的全局变量 undefined。
2)由于没有定义 return 表达式的函数隐式返回。
3)return 表达式没有显式的返回任何内容。
4)访问不存在的属性。
5)函数参数没有被显式的传递值。
6)任何被设置为 undefined 值的变量。返回null值的情形:
1)任何被设置为 undefined 值的变量
2)它在JavaScript内部有一些使用场景(如声明原型链的终结 Foo.prototype = null)但是大多数情况下都可以使用undefined来代替。
计算
1 | console.log(333+undefined);//NaN |
性能
1)由于window对象的属性值是非常多的,在每一次与undefined的比较中,搜索window对象的undefined属性都会花费时间。在需要频繁与undefined进行比较的函数中,这可能会是一个性能问题点。
2)为了避免可能对undefined值的改变,一个常用的技巧是使用一个传递到匿名包装器的额外参数。 在调用时,这个参数不会获取任何值。
1 | (function(win, doc, undefined) { |
转载申请
本作品采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,文章内图片请保留全部内容。