2016-12-01 85 views
0

我已经下面的代码片断:为什么JavaScript中的空数组输入循环?

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; 
    } 

我不知道它为什么会发生。

回答

1

我假设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));

    相关问题