您的位置:首页 > Web前端 > JavaScript

javascript中undefined和null的区别

2017-06-02 14:05 387 查看
javascript中有七种内置类型,分别是:

- 空值(null )

- 未定义(undefined )

- 布尔值(boolean )

- 数字(number )

- 字符串(string )

- 对象(object )

- 符号(symbol ,ES6 中新增)

但是null和undefined这两种类型很让人迷惑。因为两者的差别很小。

null == undefined;//true


其中null还有很奇怪的表现,比如:

typeof undefined === "undefined"; // true
typeof null === "object"; // true


这其实是javascript的一个bug。

null和undefined的区别

null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN。

null表示”没有对象”,即该处不应该有值。典型用法是:

作为函数的参数,表示该函数的参数不是对象。

作为对象原型链的终点。

Object.getPrototypeOf(Object.prototype)
// null


undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:

变量被声明了,但没有赋值时,就等于undefined。

调用函数时,应该提供的参数没有提供,该参数等于undefined。

对象没有赋值的属性,该属性的值为undefined。

函数没有返回值时,默认返回undefined。

var i;
i // undefined

function f(x){console.log(x)}
f() // undefined

var  o = new Object();
o.p // undefined

var x = f();
x // undefined


总结

简而言之,区别就是:

undefined是一个对象被声明但未初始化的(未定义的)。

null是用来存放一个空的对象的,也就是被声明而且已经初始化了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript null undefined