forループはJavaScriptの早い段階で終了するのはなぜですか?何らかの理由で私の外側のforループが最初の繰り返しの後に終了します。私はJavaScriptを初めて使っていますが、このようなことはJavaで動くと期待しています。JavaScript for Loop早期破裂
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()では、最初のconsole.log(elements.length)のように22個の要素を含む要素をループします。メソッドfilterMolecules(...)を削除すると、22個のIDがすべて記録されます。ただし、コードをそのまま使用すると、最初のIDだけが記録されます。
私はelements.length回数を実行するfilterMoleculesメソッドは、forループの外側を引き起こしていると考えています。誰かがなぜこれが起こっているのか説明してもらえますか?該当する場合は、filterMolecules(...)で、分子[i] .val()[パラメータ]を使用してGoogle Firebaseからデータを取得します。さらに、両方のメソッドはグローバル変数分子(3行目と14行目)を使用します。
'分子=のfilteredMoleculesを;' 'filterMolecules'関数に最初のパラメータの値を設定しているように見えます。これは意図されていますか?あなたがそれを表示しない間、 'check'関数のコードは、'分子 'もより高いスコープで生きていることを示します。 –