为什么这个JavaScript代码在布尔表达式不再为真之后进入for循环?

时间:2012-01-27 18:02:58

标签: javascript for-loop

编辑:原来这是Firebug错误地单步执行代码的情况,而我的错误是在其他地方。看到类似行为的同事建议定期清除浏览器缓存可以提供帮助。

我有这个简单的函数,它分割逗号分隔的字符串并使用标记来填充Dojo数据存储:

UpdateFileNames: function(names) {
    var fileNames = names.split(",");
    var fileNameData = [];
    for (var i = 0; i < fileNames.length; i++) {
        fileNameData.push({ name: fileNames[i], id: fileNames[i] });
    }
    this.fileListStore = new dojo.store.Memory({ data: fileNameData });
}

我在Firebug中踩过这段代码,无法相信我所看到的。在i == fileNames.length之前一切都很开心,此时循环再次输入fileNames[i]无效。

这里发生了什么?

2 个答案:

答案 0 :(得分:0)

你有没有尝试过少一个?

for (var i = 0; i < fileNames.length-1; i++) {
    fileNameData.push({ name: fileNames[i], id: fileNames[i] });
}

如果可行,您需要查看如何生成列表(名称)。所以你最后不要得到空白元素。

答案 1 :(得分:0)

names以逗号结尾吗?如果是,fileNames[fileNames.length - 1] == ''