gpt4 book ai didi

javascript - 为什么javascript中的空数组进入for循环?

转载 作者:行者123 更新时间:2023-12-03 05:32:02 26 4
gpt4 key购买 nike

我有以下代码片段:

console.log('**1**',parentNode.child.length); //1
for(var ch in parentNode.child)
{
console.log('PTree root child',parentNode.child[ch]); //2
}

//1中parentNode.child.length结果为0但它仍然进入 for 循环并在//2 行中给出以下输出:

PTree root child (val) {
if (this.indexOf(val) === -1) {
this.push(val);
}

return this;
}

我不确定为什么会发生这种情况。

最佳答案

我假设parentNode.child是数组。因此,以下是可能导致此问题的可能性。

  1. 该数组有一个非数字命名属性。

var data = [];
data.someFunc = function(){};
console.log("length: %s", data.length);
for(var key in data) console.log("%s: %s",key, data[key]);

  • 你不知何故给 Array.prototype 打了猴子补丁。
  • Array.prototype.coolFunc = function(){ return "cool" };
    var data = [];
    console.log("length: %s", data.length);
    for(var key in data) console.log("%s: %s", key, data[key]);

    因此,为了避免这种情况,只需使用 forEach

    var data = [];
    data.someFunc = function(){};
    console.log("length: %s", data.length);
    data.forEach(item => console.log(item));

    关于javascript - 为什么javascript中的空数组进入for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40901288/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com