javascript中undefined和null的区别
2017-06-02 14:05
387 查看
javascript中有七种内置类型,分别是:
- 空值(null )
- 未定义(undefined )
- 布尔值(boolean )
- 数字(number )
- 字符串(string )
- 对象(object )
- 符号(symbol ,ES6 中新增)
但是null和undefined这两种类型很让人迷惑。因为两者的差别很小。
其中null还有很奇怪的表现,比如:
这其实是javascript的一个bug。
null表示”没有对象”,即该处不应该有值。典型用法是:
作为函数的参数,表示该函数的参数不是对象。
作为对象原型链的终点。
undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:
变量被声明了,但没有赋值时,就等于undefined。
调用函数时,应该提供的参数没有提供,该参数等于undefined。
对象没有赋值的属性,该属性的值为undefined。
函数没有返回值时,默认返回undefined。
undefined是一个对象被声明但未初始化的(未定义的)。
null是用来存放一个空的对象的,也就是被声明而且已经初始化了。
- 空值(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中的undefined 与 null 的区别 补充篇
- Javascript 中 null、NaN和undefined的区别
- Web JavaScript中 null 与 undefined 的区别
- Javascript 中 null、NaN和undefined的区别
- Javascript 中 null、NaN和undefined的区别总结
- javascript 中的 undefined 与 null 的区别
- Javascript 中 null、NaN和undefined的区别
- Javascript 中 null、NaN和undefined的区别
- Javascript 中 null、NaN和undefined的区别
- Javascript 中 null、NaN和undefined的区别
- javascript 中Undefined,Null,NaN 数据类型的区别
- 区别Javascript中的Null与Undefined
- 理解javascript中null和undefined的区别
- Javascript 中 null、NaN和undefined的区别总结
- JavaScript null和undefined区别分析
- JavaScript中的null和undefined的区别
- 区别Javascript中的Null与Undefined
- JavaScript Undefined,Null类型和NaN值区别
- Javascript 中 null、NaN和undefined的区别
- 浅谈Javascript中undefined和null的区别