JavaScript中的null和undefined区别介绍

 更新时间:2015年01月01日 09:27:31   投稿:junjie  
这篇文章主要介绍了JavaScript中的null和undefined区别介绍,JavaScript中存在2个代表信息不存在的特殊值:null和undefined,本文主要讲解它们的区别,需要的朋友可以参考下

JavaScript中存在2个代表信息不存在的特殊值:null和undefined。个人认为可以从以下角度来理解这两个特殊值之间的区别:

1.null代表有存储信息的容器(比如之前被赋过值的变量),但该容器中的内容为空。
2.undefined代表不存在用于存储信息的容器。

JavaScript中的null与其它多数编程语言中的null没有什么区别,基本用于表示信息值为空;而在JavaScript中下述情况下表达式返回结果为undefined:

1.从未被赋过值的变量。
2.访问某个对象不存在的属性值。
3.访问数组中不存在的成员。
4.调用没有return语句的函数。
5.调用return语句为空(“return ;”)的函数。

事实上,和Infinity、NaN一样,undefined在JavaScript中是一个全局变量,在ECMAScript 3中甚至可以被赋予其它值。ECMAScript 5纠正了这个错误,并将undefined变量设定为只读。

对于null和undefined之间的比较,可以使用===全等操作符。如果使用普通的==操作符,null与undefined是等价的:


复制代码 代码如下:

console.log(null == undefined);//true
console.log(null === undefined);//false


在程序编写过程中,如果需要对某个变量赋以空值,一般使用null而不是undefined。其原因在于:

1.undefined一般认为是属于系统层面的、报错层面的信息缺失。
2.null一般认为是属于编程层面的、逻辑操作层面的信息值为空。

如果在程序中涉及类型转换,那么当转换为number类型时,null和undefined的结果是不一样的:

1.undefined转换为number的结果是NaN。
2.null转换为number的结果是0。

值得一提的是,空字符串和空数组转换成number后的结果也是0。

至于JavaScript中为什么要设计两个表示“没有”的值,可以参见阮一峰的博客文章。

实验

在下述实验代码中,表达式结果均为undefined:

复制代码 代码如下:

var a;
console.log(a);

function Sample(x){
  this.x = x;
}
var s = new Sample();
console.log(s.x)
console.log(s.notExistVariable);

var n = [2,3,4];
console.log(n[8]);

function test(){
  //no return value for this function
}
console.log(test());

function test2(){
  return;
}
console.log(test2());

相关文章

  • 带你搞懂js的深拷贝

    带你搞懂js的深拷贝

    这篇文章主要为大家介绍了js的深拷贝,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • PixiJS学习之常见图形的绘制详解

    PixiJS学习之常见图形的绘制详解

    pixijs 是一个强大的 Web Canvas 2D 库,以其强大性能而著称。这篇文章主要带大家学习一下PixiJS是如何实现常见图形绘制的,希望对大家有所帮助
    2023-02-02
  • js+canvas实现飞机大战

    js+canvas实现飞机大战

    这篇文章主要为大家详细介绍了js canvas实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • javascript 嵌套的函数(作用域链)

    javascript 嵌套的函数(作用域链)

    当你进行函数的嵌套时,要注意实际上作用域链是发生变化的,这点可能看起来不太直观。你可把下面的代码置入firebug监视值的变化。
    2010-03-03
  • 利用腾讯的ip地址库做ip物理地址定位

    利用腾讯的ip地址库做ip物理地址定位

    腾讯的这个还是相对比较准确的。因为腾讯每个QQ用户发现自己匹配的地理位置信息不准确都可以提交更正的
    2010-07-07
  • webpack常用构建优化策略小结

    webpack常用构建优化策略小结

    这篇文章主要介绍了webpack常用构建优化策略小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • JavaScript实现圆形进度条效果

    JavaScript实现圆形进度条效果

    这篇文章主要为大家详细介绍了JavaScript实现圆形进度条效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • JS暴虐查找法简洁版

    JS暴虐查找法简洁版

    有过相关经验的朋友都知道,Jscript的效率毕竟有限,在数组中查找数据时如果用常规的算法来做执行起来会很慢。
    2008-07-07
  • JavaScript使用 for...in 、 for...of 或者 forEach() 遍历元素的示例

    JavaScript使用 for...in 、 for...of 或者 forEach() 遍历元素的示例

    for...in 、 for...of 和 forEach 都是用于循环遍历集合元素的方法,但它们之间有一些重要的区别,本文通过实例代码介绍JavaScript使用 for...in 、 for...of 或者 forEach() 遍历元素的相关知识,感兴趣的朋友一起看看吧
    2023-09-09
  • 详解uniapp页面跳转URL传参大坑

    详解uniapp页面跳转URL传参大坑

    本文主要介绍了详解uniapp页面跳转URL传参大坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论