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());

相关文章

  • javascript模拟枚举的简单实例

    javascript模拟枚举的简单实例

    本篇文章主要是对javascript模拟枚举的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • 利用Javascript裁剪图片并存储的简单实现

    利用Javascript裁剪图片并存储的简单实现

    裁剪图片对我们来说是再熟悉不过的了,最近工作中就又遇到了这个需求,所以想着干脆整理下来,方法大家和自己在需要的时候参考学习,所以这篇文章主要介绍了利用Javascript裁剪图片并存储的简单实现,后端PHP处理我用的是THINKPHP框架,需要的朋友可以参考下。
    2017-03-03
  • Bootstrap Table从服务器加载数据进行显示的实现方法

    Bootstrap Table从服务器加载数据进行显示的实现方法

    Bootstrap-Table是一个Boostrap的表格插件,能够将JSON数据直接显示在表格中。接下来通过本文给大家分享Bootstrap Table从服务器加载数据进行显示的实现方法,感兴趣的朋友一起看看吧
    2016-09-09
  • Javascript正则表达式实现输入框验证信息功能实例

    Javascript正则表达式实现输入框验证信息功能实例

    正则表达式是用于匹配字符串中字符组合的模式,在JavaScript中正则表达式也是对象,这篇文章主要给大家介绍了关于Javascript正则表达式实现输入框验证信息功能的相关资料,需要的朋友可以参考下
    2024-05-05
  • JS分页效果示例

    JS分页效果示例

    JS实现分页在网上可以搜到很多的相关文章,在本文也要为大家介绍下具体的实现,感兴趣的朋友不要错过
    2013-10-10
  • 原生JS实现文件上传

    原生JS实现文件上传

    这篇文章主要为大家详细介绍了原生JS实现文件上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JS解析XML的实现代码

    JS解析XML的实现代码

    用javascript实现XML的解析的实现代码,需要的朋友可以参考下。
    2009-11-11
  • Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法

    Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法

    这篇文章主要介绍了Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 微信小程序CSS3动画下拉菜单效果

    微信小程序CSS3动画下拉菜单效果

    这篇文章主要为大家详细介绍了微信小程序CSS3动画下拉菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 浅谈Javascript实现继承的方法

    浅谈Javascript实现继承的方法

    本文给大家简单介绍了下如何在javascript中实现继承的几种方法,十分的实用,有需要的小伙伴可以参考下。
    2015-07-07

最新评论