簡體   English   中英

是array [index] === undefined是否總是與typeof array [index] ==='undefined'相同?

[英]Is array[index] === undefined the always same as typeof array[index] === 'undefined'?

我需要查看Javascript中是否有數組索引的條目,並且這個答案是要使用的(基本上我將其從===更改為!==):

if(typeof arrayName [index]!=='未定義')

IIUC與`arrayName [index]!=='undefined'一樣嗎?

我對其進行了實驗,並且可以正常工作,但是我想確保自己沒有遺漏任何邊緣情況?

更新資料

為了使WRT更加9.11.2給出一些答案(在節點9.11.2上進行9.11.2 ):

    let undefined = "Hello";
    console.log(undefined);
    let arrayName = [];
    if(arrayName[0] !== undefined) {
        console.log("Test passes");
        console.log("undefined is: ", undefined);
        console.log("arrayName[0] is: ", arrayName[0]);
    }

打印:

Hello
Test passes
undefined is:  Hello
arrayName[0] is:  undefined

因此,似乎答案是“有時無法重新定義...”,最好還是堅持使用typeof array[index] === 'undefined' ,但正如某些人指出的那樣,無法全局重新定義undefined,因此使用較短的版本應該是相當安全的。

是的,有一個非常模糊的邊緣情況:

let undefined = "confuse me!";

那意味着

 "confuse me!" === undefined

可能是true

typeof undefined === "undefined"

可能是false ,但是如果

 typeof arrayName[index] === "undefined" 

如果為true則其未定義,但是可能undefined :)

但這很可怕,您不必真正考慮這一點。

if(typeof arrayName[index] !== 'undefined')

是相同的

if(arrayName[index] !== undefined) // without quotes

但並非如您所說:

IIUC與`arrayName [index]!=='undefined'一樣嗎?

if(arrayName[index] !== 'undefined') // this is not correct

實際上,假設未定義未被覆蓋,這在JavaScript中有多危險?

未定義是全局變量,因此可以重新分配其值。 因此有可能undefined變量未定義。 但是typeof一個未定義的值將始終返回'undefined' ,因此從技術上講它是更安全的。 實際上,大多數人不會重新分配undefined ,所以兩者都可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM