【问题标题】:Javascript array of stringsJavascript 字符串数组
【发布时间】:2012-05-11 09:23:58
【问题描述】:

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

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

【问题讨论】:

    标签: javascript arrays string


    【解决方案1】:

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

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

    【讨论】:

    • 是的,有一个 window.status 属性可能会掩盖它。但是当我将它复制到小提琴时,它对我来说很好。这是链接:jsfiddle.net/wGzv9
    • @gopi1410:它似乎是特定于浏览器的。我在 Chrome 中收到了一系列“未定义”警报,但在 Firefox 中收到了正确的“空闲”警报。其他浏览器可能会做其他事情。归根结底,最好避免全局。 :-)
    • @gopi1410:请回复您的小提琴:jsFiddle 默认将您的代码包装在一个函数中,因此您的小提琴中的var status 不会创建全局变量。如果您在结果窗格上执行“查看框架源”,您就会明白我的意思。
    • @T.J.Crowder 哦,明白了!我想知道它在 chrome 中也适用于我,现在我明白了。谢谢。 :)
    猜你喜欢
    • 2013-06-03
    • 2020-06-21
    • 1970-01-01
    • 2013-03-17
    • 2018-05-01
    • 2022-01-23
    • 2013-04-27
    • 1970-01-01
    • 2013-09-18
    相关资源
    最近更新 更多