Javascript 'in' for 循环内的运算符返回类型错误

标签 javascript for-loop typeerror in-operator

为什么 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/

相关文章:

javascript - 列表迭代器中的无限循环

python - 在带有嵌套 enumerate() 的 for 循环中添加第二个参数有什么作用?

javascript - 类型错误:无法在 React 项目中读取 null 的属性 'length'

javascript - 如何将 localStorage 应用于输入复选框?

javascript - Sequelize Many to Many - 如何创建新记录和更新连接表

c - 使用 for 循环的模式

cordova - PhoneGap - 波纹 - 谷歌地图 : Drag Issue

django - Python manage.py collectstatic 类型错误 : an integer is required (got type str)

javascript - 从磁力链接数组下载多个种子

javascript - 使用 Abide 进行表单验证