含console.log()的函数作为console.log参数时的执行顺序疑问
为什么
console.log('hello', fun())的输出顺序和预期不符? 这是JavaScript的参数求值规则导致的:
- 调用
console.log('hello', fun())时,JS引擎会先把console.log的所有参数计算完成,才会执行console.log自身的输出逻辑。 - 所以第一步会优先执行
fun():函数内部的console.log(m)直接输出5,随后函数返回'hi'。 - 等两个参数(
'hello'和fun()的返回值'hi')都准备完毕后,console.log才会把这两个值一起输出,最终就出现了5、'hello'、'hi'的顺序。
如果想要得到预期的hello、5、'hi'输出顺序,拆分调用即可:
console.log('hello'); console.log(fun());
这样会先执行第一个console.log输出hello,再执行fun()输出5,最后第二个console.log输出fun()返回的hi。
内容的提问来源于stack exchange,提问作者Boksa
相关产品推荐
相关产品推荐

