带有意外输出的/ for循环JavaScript

时间:2013-04-26 00:04:27

标签: javascript

我不确定为什么这会为undefined对象的属性名称输出document。我认为它与变量表达式myArray[i++]有关。我可以使这个简单的原始变量,我将获得所有的属性名称,但我希望所有的属性名称保存到数组中。感谢您的帮助!!

var myArray = [];
var i = 0;
for (myArray[i++] in document) {
document.write(myArray[i] + "</br>");
}

3 个答案:

答案 0 :(得分:4)

它不起作用,因为您通过执行i(增量后)设置myArray[i]后增加myArray[i++]

这可行,但我不确定你为什么需要这样做。

var myArray = [];
var i = 0;
for (myArray[i] in document) {
    console.log(myArray[i++] + "</br>");
}

答案 1 :(得分:4)

这种情况正在发生,因为你总是在数组中看到一个比你定义的元素更远的元素,因为你后加i。你可以改为预增量:

var myArray = [];
var i = -1;
for (myArray[++i] in document) {
    document.write(myArray[i] + "</br>");
}

JSFiddle

答案 2 :(得分:1)

我认为您可能想要使用如下所示的循环:

for(int i = 0; i < myArray.length; i++){
  document.write(myArray[i] + "</br>");
}