1. 程式人生 > 其它 >無法獲取未定義或 null 引用的屬性“length”_JavaScript 的 Undefined、NaN和Null

無法獲取未定義或 null 引用的屬性“length”_JavaScript 的 Undefined、NaN和Null

技術標籤:無法獲取未定義或 null 引用的屬性“length”

b7700b45bc247f2eab06ee8c79b70a9f.png

一、Undefined

undefined 屬性用於存放 JavaScript 中未定義的值

它表示變數宣告過但並未賦過值

提示:無論什麼情況下都沒有必要把一個變數的值顯式地設定為undefined,但是設定這個值為Null可以釋放這個物件的記憶體,把此變數的指標設定為空。

var person;                  // 值為 undefined(空), 型別是undefined

二、NaN

NaN 即非數值(Not a Number)

NaN 屬性 與 Number.Nan 屬性相同。

提示:

請使用 isNaN() 來判斷一個值是否是數字。原因是 NaN 與所有值都不相等,包括它自己。但是在Set集合中NaN被判定為和它自己相等。

深入探討:參考維基百科

NaN(NotaNumber,非數)是電腦科學中數值資料型別的一類值,表示未定義或不可表示的值。常在浮點數運算中使用。首次引入NaN的是1985年的IEEE 754浮點數標準。

這也就解釋了下面的現象 typeof NaN == ‘number’

console.log(typeof NaN);

//輸出 number

所以這裡不是js設計上的問題。

你可以把 Not a Number 理解為特殊的數字,就像無窮大無窮小也是特殊的數字一樣, Not a Number 的字面意思則可以理解為它是一個不可以表達出來的數字。

三、Null

在 JavaScript 中 null 表示 "什麼都沒有"。

null是一個只有一個值的特殊型別。表示一個空物件引用。

從邏輯角度來看,null值表示一個空物件指標,而這也正是使用typeof操作符檢測null值會返回“object”的原因。

提示:用 typeof 檢測 null 返回是object。null 和 undefined 的值相等,但型別不等

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true

四、如何判斷這三者

Undefined 使用 typeof

let some;
if (typeof some == "undefined") {
   alert("this is undefined");
}

NaN 使用 isNaN()

let some=0/0;
if (isNaN(some)) {
   alert("this is NaN");
}

Null 的判斷

let exp=null;
if(exp===null){
    alert("is null");
}