JavaScript中的null和undefined區別介紹_javascript技巧

來源:互聯網
上載者:User

JavaScript中存在2個代表資訊不存在的特殊值:null和undefined。個人認為可以從以下角度來理解這兩個特殊值之間的區別:

1.null代表有儲存資訊的容器(比如之前被賦過值的變數),但該容器中的內容為空白。
2.undefined代表不存在用於儲存資訊的容器。

JavaScript中的null與其它多數程式設計語言中的null沒有什麼區別,基本用於表示資訊值為空白;而在JavaScript中下述情況下運算式返回結果為undefined:

1.從未被賦過值的變數。
2.訪問某個對象不存在的屬性值。
3.訪問數組中不存在的成員。
4.調用沒有return語句的函數。
5.調用return語句為空白(“return ;”)的函數。

事實上,和Infinity、NaN一樣,undefined在JavaScript中是一個全域變數,在ECMAScript 3中甚至可以被賦予其它值。ECMAScript 5糾正了這個錯誤,並將undefined變數設定為唯讀。

對於null和undefined之間的比較,可以使用===全等操作符。如果使用普通的==操作符,null與undefined是等價的:


複製代碼 代碼如下:

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


在程式編寫過程中,如果需要對某個變數賦以空值,一般使用null而不是undefined。其原因在於:

1.undefined一般認為是屬於系統層面的、報錯層面的資訊缺失。
2.null一般認為是屬於編程層面的、邏輯操作層面的資訊值為空白。

如果在程式中涉及類型轉換,那麼當轉換為number類型時,null和undefined的結果是不一樣的:

1.undefined轉換為number的結果是NaN。
2.null轉換為number的結果是0。

值得一提的是,Null 字元串和空數群組轉換成number後的結果也是0。

至於JavaScript中為什麼要設計兩個表示“沒有”的值,可以參見阮一峰的部落格文章。

實驗

在下述實驗代碼中,運算式結果均為undefined:

複製代碼 代碼如下:

var a;
console.log(a);

function Sample(x){
  this.x = x;
}
var s = new Sample();
console.log(s.x)
console.log(s.notExistVariable);

var n = [2,3,4];
console.log(n[8]);

function test(){
  //no return value for this function
}
console.log(test());

function test2(){
  return;
}
console.log(test2());

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.