为什么 javascript 返回此类型错误:
TypeError: Cannot use 'in' operator to search for 'active' in undefined
当我做这样的事情时
foo = [
{link:"http1", active:"true"},
{link:"http2", active:"true"},
{link:"http3"}
]
var checker = function(){
for(i=0; i<= foo.length; i++){
if('active' in foo[i]){
checked = true
}
}
}
但是当我在控制台中使用相同的 foo 对象执行此操作时
'active' in foo[0]
它返回true吗?
最佳答案
错误显示表达式 foo[i]
未定义 - 因为表达式确实计算结果为未定义。 (提示:i = 4)。
简单地说,这个问题可以通过 'active' in undefined
重现。 ,不需要循环。
这种情况的原因是循环条件不正确:它应该是 i < foo.length
,所以i
变为 0..3 而不是 0..4。
该代码可能还应该使用本地 i
(感谢 RobG!),一个 break
(当设置了检查时),从函数返回一个值(而不是使用假定的全局值),和/或替换为 Array.some
.
现在也以“打印错误”关闭..
关于Javascript 'in' for 循环内的运算符返回类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25695452/