开发者问题收集

数组值未定义……我该如何测试呢

2017-09-12
509

Javascript 数组值未定义...我该如何测试呢

以及

如何检查 JavaScript 中未定义的变量

就我而言,这些都是错误的:

我只得到: error

当尝试:

console.log(!fromToParameters[7].value.firstInput);
console.log(!!fromToParameters[7].value.firstInput);
console.log(fromToParameters[7].value.firstInput === undefined);
console.log(typeof fromToParameters[7].value.firstInput == 'undefined');
console.log(fromToParameters[7].value.firstInput !== undefined);
console.log(typeof fromToParameters[7].value.firstInput != 'undefined');

但是这个(条目存在)工作正常:

console.log(!fromToParameters[0].value.firstInput);
console.log(!!fromToParameters[0].value.firstInput);
console.log(fromToParameters[0].value.firstInput === undefined);
console.log(typeof fromToParameters[0].value.firstInput == 'undefined');
console.log(fromToParameters[0].value.firstInput !== undefined);
console.log(typeof fromToParameters[0].value.firstInput != 'undefined');

false true false true false true

这是 React 与 js 不同的问题吗?为什么我不能像在这些 stackoverflow 线程中那样做?

更新:

所以你根本不能指向一个丢失的数组元素。

查看下面的答案。

我想我会使用存储在 const 中的 array.lenght,然后在“for”循环中检查我的增量,以根据具体情况允许或禁止修改我的数组条目。

你不能直接问 js 一个不存在的数组索引的该死的 var 是否存在,这真的很烦人。

这似乎是很简单的东西:不能指向索引?那么 NO。不,这个变量或任何其他变量都不存在此索引。结束。

js 的人绝对应该在注释中添加一些如此简单的东西。

我很想发布我的代码,因为我有一些东西可以让我做我想做的事情(调用一个有很多未定义的索引并获取一个带有“”的对象),但它有点可怕。

2个回答

您应该这样做:

console.log(fromToParameters[7] && fromToParameters[7].value.firstInput);
console.log(!!fromToParameters[7] && fromToParameters[7].value.firstInput);
console.log( fromToParameters[7]&& typeof fromToParameters[7].value.firstInput == 'undefined');

我刚刚添加了检查。因此,如果 fromToParameters[7]undefinednull ,您的代码不会中断。

Ved
2017-09-12

首先检查索引(例如:console.log(!yourArray[x]),然后根据测试是通过还是失败,访问/添加您想要的索引/属性。

connected_user
2017-09-12