2012-12-20 141 views
0

当我尝试将元素推送到JavaScript数组中时,它不起作用。 这是我能想到的最简单的样本。 为什么不能工作?javascript push in a loop

<!DOCTYPE html> 
    <html> 
    <body> 

    <script> 
    var i; 
    var mycars = new Array(); 

    for(i=1;i<=10;i++){ 
     mycars.push[ i.toString()+"-" ]; 
    } 

    alert(mycars.join("")); 

    </script> 

    </body> 
    </html> 

回答

3

push是一个函数。你调用函数与(),不[]

mycars.push(i.toString()+"-"); 
// here ---^  and here ----^ 

在哪里你可能得到困惑的是,你可以添加到一个数组,而无需使用push,只是将其分配给数组元素,即使该元素尚不存在。因此,例如,你的循环可能会是这样的:

for(i=1;i<=10;i++){ 
    mycars[mycars.length] = i.toString()+"-"; 
} 

在那里,因为我指的是一个数组元素(mycars[mycars.length]),而不是调用一个函数,我用[]

附注:不要var mycars = new Array();,只需写var mycars = [];。它做同样的事情,但更简洁,不容易产生副作用。

+1

如果我对这种速度不了解的话,我会说你是Jon Skeet。 –

+0

@JustinNiessner:LOL –

+0

当然。谢谢。 – Shawn