为什么for循环会在JavaScript中提前终止?由于某种原因,我的外部for循环在第一次重复后终止。我是JavaScript新手,但我希望这样的东西可以在Java中运行。
function check(){
var elements = document.getElementById('fields').children;
var filteredMolecules = molecules;
console.log(elements.length);
for (i = 0; i < elements.length; i++) {
console.log(elements[i].id)
filterMolecules(filteredMolecules, elements[i].id, 0, 10);
}
}
function filterMolecules(molecules, parameter, lower, upper){
console.log('filtering');
var filteredMolecules = [];
for (i=0;i<molecules.length;i++){
var value = molecules[i].val()[parameter];
filteredMolecules.push(molecules[i]);
}
molecules=filteredMolecules;
}
在check()中,我遍历包含22个项目的元素,如第一个console.log(elements.length)所示。如果我删除方法filterMolecules(...),则会记录所有22个ID。但是,使用代码,只记录第一个id。
我认为应该运行elements.length次数的filterMolecules方法导致外部for循环不起作用。有人可以解释为什么会发生这种情况。如果相关,则在filterMolecules(...)中使用molec [i] .val()[parameter]从Google Firebase检索数据。另外,两种方法都使用全局变量分子(第3行和第14行)
答案 0 :(得分:2)
如果你没有在javascript中声明变量,你最终会使用全局变量(这可能很难发现bug的来源)。因此,您在这两个循环中使用相同的全局变量http://localhost:8000/services
[{"name":"/loadtestservice","url":"http://0.0.0.0:51796"},{"name":"kafka_native","url":"tcp://localhost:9092/kafka_native"},{"name":"friendservice","url":"http://0.0.0.0:60399"},{"name":"chirper-front-end","url":"http://0.0.0.0:57143"},{"name":"chirpservice","url":"http://0.0.0.0:54485"},{"name":"activityservice","url":"http://0.0.0.0:51855"},{"name":"cas_native","url":"tcp://127.0.0.1:4000/cas_native"}]
。当您开始循环思考i
时,您意外地增加了第一个molecules
的计数器循环。使用不同的变量或定义它们:
for
这将为每个循环提供自己的 for (let i=0;i<molecules.length;i++)
版本。
在这种情况下,由于声明在单个函数内部,因此您也可以使用i
:
var