是否在其参数之前执行了包含函数?

时间:2017-10-28 09:03:07

标签: javascript

我对JavaScript中的评估顺序感到困惑。在我的第一个例子中,我希望在函数number++之前评估参数console.log(),使控制台输出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的理解,在执行包含函数之前,将首先从左到右评估参数。这似乎不是这样 - 有人可以解释为什么不呢?

3 个答案:

答案 0 :(得分:2)

这里的问题是++运算符。这表示取数字的值,将其传递给函数,然后在数字中加一。

如果将其更改为++编号,您将获得预期的行为。这表示在数字值中加一,然后将其传递给函数。

答案 1 :(得分:1)

这是pre-incrementpost increment的基础知识。请记住,我们有++numbernumber++++number会立即(在此时)增加数量,而number++会在下次数字时增加数量。

答案 2 :(得分:0)

console.log(number++)运行console.log(number)因为它无法运行++,因为参数正确为console.log(++number)

var foo = [1,2,3];

for (number of foo) console.log(number++);

console.log("---");
for (number of foo) console.log(number);

console.log("---");
// This is the same as your second block of code
for (number of foo) console.log(++number);
    
console.log("---");
// You can see that does not change the foo values
for (number of foo) console.log(number);