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(中)》第二章
相關文章
相關標籤/搜索