array[index] === undefined 是否总是与 typeof array[index] === 'undefined' 相同?
Is array[index] === undefined the always same as typeof array[index] === 'undefined'?
我需要查看在 Javascript 和 this answer 中是否有数组索引的条目用于使用(基本上我将其从 === 更改为 !==):
if(typeof arrayName[index] !== 'undefined')
IIUC 这与 `arrayName[index] !== 'undefined'?
相同
我对它进行了试验并且它有效,但我想确保我没有遗漏任何边缘情况?
更新
清除 WRT 给定的一些答案(运行 这在节点 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
所以答案似乎是 "No undefined could sometimes be redefind ..." ... 最好坚持使用 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 this is the same as `arrayName[index] !== 'undefined'?
if(arrayName[index] !== 'undefined') // this is not correct
How dangerous is it in JavaScript, really, to assume undefined is not overwritten?
Undefined 是一个全局变量,因此它的值可以重新分配。所以变量 undefined
可能无法取消定义。但是 typeof
一个未定义的值总是 return 'undefined'
,所以它在技术上更安全。实际上,大多数人不会重新分配 undefined
,所以两者都有效。
我需要查看在 Javascript 和 this answer 中是否有数组索引的条目用于使用(基本上我将其从 === 更改为 !==):
if(typeof arrayName[index] !== 'undefined')
IIUC 这与 `arrayName[index] !== 'undefined'?
相同我对它进行了试验并且它有效,但我想确保我没有遗漏任何边缘情况?
更新
清除 WRT 给定的一些答案(运行 这在节点 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
所以答案似乎是 "No undefined could sometimes be redefind ..." ... 最好坚持使用 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 this is the same as `arrayName[index] !== 'undefined'?
if(arrayName[index] !== 'undefined') // this is not correct
How dangerous is it in JavaScript, really, to assume undefined is not overwritten?
Undefined 是一个全局变量,因此它的值可以重新分配。所以变量 undefined
可能无法取消定义。但是 typeof
一个未定义的值总是 return 'undefined'
,所以它在技术上更安全。实际上,大多数人不会重新分配 undefined
,所以两者都有效。