[英]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
未定義是全局變量,因此可以重新分配其值。 因此有可能undefined
變量未定義。 但是typeof
一個未定義的值將始終返回'undefined'
,因此從技術上講它是更安全的。 實際上,大多數人不會重新分配undefined
,所以兩者都可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.