看看这个片段:
let first = 1;
function second() {
console.log(2);
}
console.log(first, second()); // 2 1
我希望它按顺序打印 1 2
而不是 2 1
。为什么函数 second
先执行?
我观察 console.log
的两个参数是否都是函数,它们传递的顺序被保留(见下面的例子)
function first() {
console.log(1);
}
function second() {
console.log(2);
}
console.log(first(), second()); // 1 2
请使用相关资源解释此行为。
最佳答案
在调用包含参数列表的函数之前评估参数列表中的所有参数。所以
someFn(first(), second());
将总是调用first
, 然后调用 second
(连同任何其他参数),直到它得出像
someFn(firstResultExpression, secondResultExpression);
此时someFn
将使用那些(现已解析的)表达式调用。
在这种情况下,someFn
恰好是 console.log
.所以如果first()
和 second()
自己记录任何内容,这些日志将始终出现在最后一个 someFn
之前。开始做任何事情。
关于javascript - 为什么函数在console.log中先执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58217899/