【发布时间】:2017-01-28 20:09:34
【问题描述】:
为什么回调console.logs的结果是result = array[0] or 1而不是array[1] or 2?
function test(array, callback) {
var startingIndex = 0;
var result = array[startingIndex];
startingIndex++;
callback(result);
}
test([1, 2, 3], function(result) {
console.log(result);
});
【问题讨论】:
-
您对回调的额外复杂性感到困惑。如果您在现在调用
callback(result)的位置执行console.log(result),您会看到相同的结果。调试艺术的一部分是简化和再简化一些,并且不被与问题无关的事情分心。另外,您知道如何在浏览器中使用 JavaScript 调试器吗?如果您在调试器中逐行执行代码,您会立即看到发生了什么。这里是Chrome DevTools的介绍。 -
我在函数内部使用了没有回调和console.log(result)的Chrome调试器,当它到达startingIndex++时,startingIndex从0更新为1,但对结果没有影响。它保持在 1.. 仍然对为什么在 console.log 之前没有更新结果感到困惑。不知道我错过了什么。
-
JavaScript 按照您编写的顺序逐句执行您的代码。
result和startingIndex是两个不同的变量。改变一个不会影响另一个。
标签: javascript increment