3

所以我在这里遇到了奇怪的问题。我有一个数组status=new Array()0然后我从to迭代N-1,并分配status[i]="idle";我试图做 alert 来检查这些值,它们都被分配给一个字符 coma ,。有谁知道出了什么问题?

var status=new Array();
window.onload = function() {
    for(var i=0;i<5;i++) {
        status[i]="idle";
        alert(status[i]);
    }
}
4

1 回答 1

7

使用不同的变量名(或者更好的是,根本不使用全局变量)。已经有一个window.status属性,显然有些东西不允许你用你自己的东西来遮蔽它(这让我有点惊讶;我想知道数组是否在赋值时被强制转换为字符串或其他东西)。在全局范围内,var在对象上创建属性window,这就是window.status相关的原因。

这个例子source)复制了你的问题(对我来说,使用 Chrome),这个例子source)只是更改了名称,显示了正确的警报系列。

请注意,这是特定于浏览器的。在 Firefox 上,即使是您的旧代码也会向我显示正确的警报系列。例如,Firefox 允许我们重新定义window.status,但 Chrome 不允许。

于 2012-05-11T09:26:35.137 回答