1. 程式人生 > >null 與 undefined 的區別

null 與 undefined 的區別

一 定義

null 是 javascript 的關鍵字,表示一個特殊值,常用來描述"空值",typeof 運算返回"object",所以可以將 null 認為是一個特殊的物件值,含義是"非物件"。

undefined 是預定義的全域性變數,他的值就是"未定義", typeof 運算返回 "undefined"

typeof null; // "object"
typeof undefined; // "undefined"

二 轉義

轉換成 Boolean 時均為 false,轉換成 Number 時有所不同

!!(null); // false
!!(undefined); // false
Number(null); // 0
Number(undefined); // NaN

null == undefined; //true
null === undefined; //false

三 判定

isNull = function (obj) {
  return obj === null;
}
isUndefined = function (obj) {
  return obj === void 0;
}

四 用法

null 常用來定義一個空值

undefined 典型用法是:

  1. 變數被聲明瞭,但沒有賦值時,就等於 undefined。
var test;
console.log(test); //undefined
  1. 呼叫函式時,應該提供的引數沒有提供,該引數等於 undefined。
//類如jQuery最外層IIFE用法
//這裡是為確保undefined的值,因為es3中undefined可以賦值,es5才做了修正,變為只讀

(function( window, undefined) {

})(window)
  1. 物件沒有賦值的屬性,該屬性的值為 undefined。
var test = {}
console.log(test.a); // undefined
  1. 函式沒有返回值時,預設返回 undefined。
function test(){}
test(); //undefined