2016-12-01 83 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));

    相關問題