外环只发射一次

Ben*_*ard 0 javascript php loops

我有什么(对我来说)看起来像一个非常基本的嵌套循环.除了外循环只是第一次触发:

var js_recipes = <?php echo json_encode($recipesArray); ?>;
console.log("there are " + js_recipes.length + " recipes"); //console confirms 2

for (var i = 0; i < js_recipes.length; i++) {
    console.log("adding recipe"); //only fires once
    js_recipe = js_recipes[i];

    //add each ingredient
    for (var i = 0; i < js_recipe.ingredients.length; i++) {
        console.log("adding ing"); //fires multiple times for first recipe
    };
};
console.log("looping complete");//fires ok
Run Code Online (Sandbox Code Playgroud)

控制台输出是:

There are 2 recipes
adding recipe
adding ing
adding ing
adding ing
adding ing
looping complete
Run Code Online (Sandbox Code Playgroud)

我一定错过了一些简单的东西,但为什么我只是迭代第一个食谱?

Den*_*ret 13

变量的范围是全局范围或声明它的函数,因此i在此代码中只有一个并且i由内循环和外循环递增.

对不同的循环使用不同的迭代器变量.

for (var i = 0; i < js_recipes.length; i++) {
    console.log("adding recipe");
    js_recipe = js_recipes[i];

    //add each ingredient
    for (var j = 0; j < js_recipe.ingredients.length; j++) {
        console.log("adding ing"); 
    };
};
Run Code Online (Sandbox Code Playgroud)