JavaScript中的‘空’

JavaScript 数据类型中有几个特殊的数值,开发过程当中可能会常常用到,却经常忽略自己存在的问题javascript

不是值的值(null, undefined)

undefined类型只有一个值,即undefined。java

null类型也只有一个值,即null。ui

他们的名称既是类型也是值。spa

undefined和null常被用来表示‘空’值或‘不是值’的值。两者之间有细微差异。code

  • null 指空值(empty value)
  • undefined 指没有值(missing value) 或者
  • undefined 指从未赋值
  • null 指曾经赋过值,但当前没有值

null 是一个特殊关键字,不是标识符,咱们不能将其看成变量来使用和赋值操做。ip

undefined 倒是一个标识符,能够看成变量使用和赋值。开发

  • 严格模式下
function foo() {
 "use strict";
    var undefined = 2;
    console.log( undefined ); // 2
}
foo();
复制代码
  • 非严格模式下
function foo() {
    undefined = 2; // 很是糟糕的作法!
}
foo();
function foo() {
 "use strict";
    undefined = 2; // TypeError!
}
foo();
复制代码

永远不要从新定义undefinedit

undefined是一个内置标识符(除非被从新定义),它的值是undefined,经过void运算符便可获得该值。io

var a = 42;
console.log( void a, a ); // undefined 42
复制代码

void 并不改变表达式的结果, 只是让表达式不返回值。console

咱们用 void 0 来得到 undefined(这主要源自 C 语言,固然使用 void true 或其余 void 表达式也是能够的)。void 0、void 1 和 undefined 之间并无实质上的区别。

摘录自《你不知道的JavaScript(中)》第二章
相关文章
相关标签/搜索