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

Why is this JavaScript code entering a for loop after the boolean expression is no longer true?

本文关键字:之后 true 循环 for 不再 JavaScript 代码 布尔表达式 为什么      更新时间:2023-09-26

编辑:这是Firebug错误地执行代码的情况,而我的bug在其他地方。一位看到类似行为的同事表示,定期清除浏览器缓存会有所帮助。

我有一个简单的函数,它可以拆分逗号分隔的字符串,并使用令牌填充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]无效。

这是怎么回事?

names是否以逗号结尾如果是,则为fileNames[fileNames.length - 1] == ''

  • 概念证明

你试过少循环一次吗?

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

如果这有效的话,你需要看看你是如何生成你的列表(名字)的。这样你就不会在结尾处得到空白元素。