我对JavaScript中的评估顺序感到困惑。在我的第一个示例中,我期望在函数console.log()
之前评估参数number++
,从而使控制台输出为2,3,4
。是在其参数之前执行的包含函数吗?
打印1, 2, 3
到控制台:
var foo = [1,2,3]
for (number of foo) {
console.log(number++)
}
打印2, 3, 4
到控制台:
var foo = [1,2,3]
for (number of foo) {
number++
console.log(number)
}
根据我对this answer的理解,在执行包含函数之前,将首先从左到右评估参数。这似乎并非如此 - 有人可以解释为什么不能?
'可变++'增加已经outputed后/使用时,'++可变'以前。两者都不是函数调用 – baao
不要忘记声明所有变量,比如'number',否则它们会在全局范围内结束。或者查看[严格模式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode),如果您尝试访问/分配未声明的变量,它会抛出。 – Thomas