看看这个片段:
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
开始执行任何操作之前。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句