我有以下代码段:
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;
}
我不确定为什么会这样。
答案 0 :(得分:1)
我假设parentNode.child是数组。 所以,这可能是导致这种情况的可能性。
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.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));