4

我试图控制台记录一个以nameJavaScript 命名的数组,但它没有按预期工作。我正在尝试使用的版本,但使用它chrome 29没有问题。firefox

name打印使用 for 循环命名的数组:

var name = ["Hello", "foo", "test", "tried"];

for (var i = 0; i < name.length; i++) {

    console.log(name[i]);

}

结果: 在此处输入图像描述

test打印使用 for 循环命名的数组:

var test = ["Hello", "foo", "test", "tried"];

for (var i = 0; i < test.length; i++) {

    console.log(test[i]);

}

结果: 在此处输入图像描述

4

1 回答 1

4

name是 的简写window.name,它是一个包含当前窗口名称的属性。以下:

var name = ["Hello", "foo", "test", "tried"];

不会创建新变量。相反,该数组被展平为一个字符串,并将结果分配给该name属性:

> var name = ["Hello", "foo", "test", "tried"];
undefined
> name
"Hello,foo,test,tried"

这就是导致奇怪的迭代行为的原因。

于 2013-09-02T13:24:31.400 回答