null 和 undefined 的區別


 

null:Null類型,代表 “空值”,代表一個空對象指針,使用typeof運算得到 “object” ,所以可以認為它是一個特殊的對象值。

undefined:Undefined類型,當一個聲明了一個變量未初始化時,得到的就是 undefined。

null是javascript的關鍵字,可以認為是對象類型,它是一個空對象指針,和其他語言一樣都代表“空值”,不過undefined卻是javascript才有的。undefined是在ECMAScript第三版引入的,為了區分指針對象和未初始化的變量,它是一個預定義的全局變量。沒有返回值的函數返回為undefined,沒有實參的形參也是undefined。

 

javascript權威指南:null 和 undefined 都表示 “值的空缺”,你可以認為 undefined 是表示系統級的、出乎意料的或類似錯誤的值的空缺,而null是表示程序級的、正常的或在意料之中的值的空缺。

 

javascript高級程序設計:在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。unll值則是表示空對象指針。

 

typeof undefined  //  undefined

typeof null     // object

 

null == undefined  // true

ECMAScript認為 undefined 是從 null 中派生出來的,所以把它們定義為相等的。但是,如果在一些情況下,我們一定要區分這兩個值,那么可以使用下面的方法:

1、 null === undefined  // false

2、 typeof null === typeof undefined  // false

 

采坑點:

  undefined + 6   // NaN

  null + 6     // 6

根據C語言的傳統,null被設計成可以自動轉為0

 

目前的用法

null表示 “沒有對象”,即該處不應該有值。

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

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

undefined表示“缺少值”,就是此處應該有一個值,但是還沒有定義。

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

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

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

(4)函數沒有返回值時,默認返回undefined。

 

使用實例

轉化的時候,undefined為NaN,null為0.

Number(undefined)  // NaN

Number(undefined + 10)  //NaN

Number(null)  // 0

Number(10 + null)  // 10

undefined === null  //false

undefined == null  //true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM