FED实验室 - 专注WEB端开发和用户体验

深入javascript(一):null 与 undefined

JAVASCRIPT 煦涵 4775℃ 0评论

Null类型与Undefined类型是javascript五大基本数据类型中的两种,他们的使用有诸多相似,下面来看看它们的区别于联系。

1、基本含义
undefined:"未定义"
null:"空对象指针"

2、是否保留字
undefined:"否",可以作为标识符,可覆盖
null:"是"

3、定义
ECMAScipt中的变量是松散类型的,即可以用来保存任何类型的数据。
var Benjamin;
var Benjamin02 = null;
console.log(Benjamin);//undefined
console.log(Ben);//报错:Ben is not defined
console.log(typeof Benjamin);//undefined
console.log(typeof Ben); //undefined
console.log(typeof Benjamin02);//object

因null是空对象,所以一般定义存放对象的标识符时,会指定null值

4、in操作符
console.log(undefined in window);//true
console.log(undefined in {});//false
console.log(null instanceof Object);//false
undefined 是window下的一个特殊属性

5.返回值
->返回undefined值的情形:
1)访问未修改的全局变量 undefined。
2)由于没有定义 return 表达式的函数隐式返回。
3)return 表达式没有显式的返回任何内容。
4)访问不存在的属性。
5)函数参数没有被显式的传递值。
6)任何被设置为 undefined 值的变量。

->返回null值的情形:
1)任何被设置为 undefined 值的变量
2)它在JavaScript内部有一些使用场景(如声明原型链的终结 Foo.prototype = null)但是大多数情况下都可以使用undefined来代替。

6.计算
console.log(333+undefined);//NaN
console.log(333+null);//333
null 与数值运算时转换为0
7.性能
1)由于window对象的属性值是非常多的,在每一次与undefined的比较中,搜索window对象的undefined属性都会花费时间。在需要频繁与undefined进行比较的函数中,这可能会是一个性能问题点。
2)为了避免可能对undefined值的改变,一个常用的技巧是使用一个传递到匿名包装器的额外参数。 在调用时,这个参数不会获取任何值。

<script type="text/javascript">
(function(win, doc, undefined) {
    //这样undefined就成了局部变量
})(window,document);
</script>

 

下面是「FED实验室」的微信公众号二维码,欢迎扫描关注:

FED实验室

行文不易,如有帮助,欢迎打赏!

赞赏支持or喜欢 (0)or分享 (0)
捐赠共勉
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址