是array [index] === undefined是否总是与typeof array [index] ==='undefined'相同?

时间:2018-07-04 20:41:14

标签: javascript arrays node.js typescript v8

我需要查看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,因此应该使用较短的版本相当安全。

3 个答案:

答案 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,所以两者都可以。