数组值未定义……我该如何测试呢
2017-09-12
509
以及
就我而言,这些都是错误的:
当尝试:
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]
为
undefined
或
null
,您的代码不会中断。
Ved
2017-09-12
首先检查索引(例如:console.log(!yourArray[x]),然后根据测试是通过还是失败,访问/添加您想要的索引/属性。
connected_user
2017-09-12