JavaScript 的 null 和 undefined 判斷


null 和 undefined 在 JavaScript 是最常見的空問題。

null 和 undefined 的定義

JavaScript 的最初版本是這樣區分的:

  • null是一個表示"無"的對象,轉為數值時為 0;
  • undefined是一個表示"無"的原始值,轉為數值時為NaN。

下圖對上面的 2 個概念進行了對比:

0_Rme3K8rdqcOHugd5

為什么會出現這個問題

這個和 JavaScript 的語言特性有關。

在最開始的時候,JavaScript 通常會被定義為是一個解釋型語言。這個語言的特點是不需要編譯,直接解釋使用。

同時 JavaScript 為了增強語言的靈活性,又被設計為弱類型語言。

換句話說,在上面的定義的 null 的時候,是可以直接對應整數類型的,這個就對代碼在執行的時候帶來很多困惑。

針對編譯類型和強類型語言來說,這個就非常頭疼。

比如說在 Java 中,如果你需要使用一個字符串 string 之前,你必須要先定義這個字符串,你可以給字符串賦 null ,或者初始化一些字符,但是你必須要定義。

否則在后面引用的時候就會報錯,JavaScript 就不需要這樣,直接用就行,這個時候,如果你壓根就沒有定義一個變量,然后就直接用,那么就會出現 undefined 的錯誤。

在強類型語言中,如果你定義變量為字符串,那么你就只能往這個變量里面存字符串,如果你存其他類型的話,編譯器會報錯。JavaScript 會嘗試自動給你類型轉換,這個就帶來不少困惑的問題,比如說在變量中存的 1 ,這個可能是整數 1 ,也可能是布爾類型。

如何判斷

可以使用 _.isNil() 函數來進行判斷。

檢查 value 是否是 null 或者 undefined

需要注意的是,如果你的輸入值是 '' 的話,這個函數是沒有辦法判斷的。

 

https://www.ossez.com/t/javascript-null-undefined/13693


免責聲明!

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



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