1. 程式人生 > >js的基本類型有哪些?引用類型有哪些?(二)------null和undefined的區別

js的基本類型有哪些?引用類型有哪些?(二)------null和undefined的區別

參考 pan 原型 Language any strong 代碼 pre nan

null和undefined的區別

1.類型的區別

console.log(typeof(undefined));//undefined
console.log(typeof(null));//object
console.log(null==undefined);//true
console.log(null===undefined);//false

------------延伸,為什麽console.log(typeof(null));//object-----這是因為es設計時認為,null表示空對象指針,只不過值為空,但是代碼執行時會正常站位;所以用typeof的時候,會返回"object"。所以一般都會把null當做空對象的占位符。

2.null在最初的設計為裝換類型時,可轉換為0;而undefined為n

console.log(Number(null));//0

console.log(Number(undefined));//NaN

3.undefined和null在if語句中,都會被自動轉為false;

    if(!null){
        //do something
    }
    if(!undefined){
        //do something
    }

4.目前的用法

目前,null和undefined基本是同義的,只有一些細微的差別。

null表示"沒有對象",即該處不應該有值。典型用法是:

(1) 作為函數的參數,表示該函數的參數不是對象。

(2) 作為對象原型鏈的終點。

  Object.getPrototypeOf(Object.prototype)// null

undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是:

(1)變量被聲明了,但沒有賦值時,就等於undefined。

(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。

(3)對象沒有賦值的屬性,該屬性的值為undefined。

(4)函數沒有返回值時,默認返回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

  本文參考鏈接:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

js的基本類型有哪些?引用類型有哪些?(二)------null和undefined的區別