我需要查看Javascript中是否有某个数组索引条目,并且this answer说要使用(基本上我将其从===更改为!==):
if(typeof arrayName [index]!=='undefined')
IIUC与`arrayName [index]!=='undefined'一样吗
我已经对其进行了实验,但是它可以确保我不会丢失任何边缘情况吗?
要清除WRT中给出的某些答案(将此问题放在节点root
上):
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
,但正如某些人指出的那样,不能在全局范围内重新定义undefined,因此应该使用较短的版本相当安全。
答案 0 :(得分:4)
是的,边缘情况非常模糊:
let undefined = "confuse me!";
这意味着
"confuse me!" === undefined
可能是true
和
typeof undefined === "undefined"
可能是false
,但如果
typeof arrayName[index] === "undefined"
是true
,然后没有明确定义,但是可能不是undefined
:)
但是这很可怕,您不必真正考虑这一点。
答案 1 :(得分:1)
if(typeof arrayName[index] !== 'undefined')
与
相同if(arrayName[index] !== undefined) // without quotes
但不是您所说的那样:
IIUC与`arrayName [index]!=='undefined'一样吗
if(arrayName[index] !== 'undefined') // this is not correct
How dangerous is it in JavaScript, really, to assume undefined is not overwritten?
答案 2 :(得分:1)
Undefined是全局变量,因此可以重新分配其值。因此,变量undefined
可能未定义。但是typeof
的未定义值将始终返回'undefined'
,因此从技术上讲更安全。实际上,大多数人不会重新分配undefined
,所以两者都可以。