Javascript 回调和递增变量

Javascript 回调和递增变量,javascript,increment,Javascript,Increment,当callback console.log记录结果时,为什么result=array[0]或1而不是array[1]或2 function test(array, callback) { var startingIndex = 0; var result = array[startingIndex]; startingIndex++; callback(result); } test([1,

当callback console.log记录结果时,为什么result=array[0]或1而不是array[1]或2

    function test(array, callback) {
        var startingIndex = 0;

        var result = array[startingIndex];

        startingIndex++;

        callback(result);

    }

        test([1, 2, 3], function(result) {
            console.log(result);
    });

这是因为在分配
结果
变量之前,要先递增
开始索引
变量

你有:

var result = array[startingIndex];
startingIndex++;
交换这两行,您将获得预期结果:

startingIndex++;
var result = array[startingIndex];

这是因为在分配
结果
变量之前,要先递增
开始索引
变量

你有:

var result = array[startingIndex];
startingIndex++;
交换这两行,您将获得预期结果:

startingIndex++;
var result = array[startingIndex];

你把自己弄糊涂了,回拨的额外复杂性。如果您现在在
回调(结果)
调用的位置执行
console.log(结果)
调用,您将看到相同的结果。调试艺术的一部分是不断简化,不要被与问题无关的事情分散注意力。另外,您知道如何在浏览器中使用JavaScript调试器吗?如果在调试器中逐行遍历代码,您将立即看到发生了什么。下面是对的介绍。我使用的Chrome调试器在函数中没有回调和console.log(result),当它到达startingIndex++时,startingIndex从0更新为1,但对结果没有影响。它保持在1..仍然不明白为什么在console.log之前不更新结果。不确定我遗漏了什么。JavaScript按照您编写代码语句的顺序逐语句执行代码语句<代码>结果和
开始索引
是两个不同的变量。更改一个不会影响另一个。回调的额外复杂性让您感到困惑。如果您现在在
回调(结果)
调用的位置执行
console.log(结果)
调用,您将看到相同的结果。调试艺术的一部分是不断简化,不要被与问题无关的事情分散注意力。另外,您知道如何在浏览器中使用JavaScript调试器吗?如果在调试器中逐行遍历代码,您将立即看到发生了什么。下面是对的介绍。我使用的Chrome调试器在函数中没有回调和console.log(result),当它到达startingIndex++时,startingIndex从0更新为1,但对结果没有影响。它保持在1..仍然不明白为什么在console.log之前不更新结果。不确定我遗漏了什么。JavaScript按照您编写代码语句的顺序逐语句执行代码语句<代码>结果和
开始索引
是两个不同的变量。改变一个不会影响另一个。