You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么这段JS代码中'ho'比'hello'先输出?执行顺序疑问

执行顺序原因

这个现象和JavaScript的表达式求值规则直接相关,你遗漏的核心知识点有两个:

  • 任何函数执行前,都会先对它的所有入参完成求值,拿到最终值后才会进入函数内部执行逻辑
  • 字符串拼接+运算符会先分别计算左右两个操作数的结果,再完成拼接操作

对应你的代码执行流程拆解

  1. 调用init()进入函数执行上下文
  2. 处理console.log("hello " + validate())语句:首先需要计算console.log的入参值,也就是"hello " + validate()的拼接结果
  3. 计算拼接结果时需要先拿到右操作数validate()的返回值,因此会触发validate()函数优先执行
  4. validate()内部先执行console.log("ho "),控制台输出ho,随后返回字符串hi
  5. 拼接操作的两个操作数都已得到结果:"hello " + "hi" = "hello hi"
  6. 最后执行外层的console.log("hello hi"),控制台输出hello hi

补充验证示例

如果有多个函数作为操作数参与计算,会按照从左到右的顺序依次求值:

function getA() {
  console.log('计算getA')
  return 1
}
function getB() {
  console.log('计算getB')
  return 2
}
console.log(getA() + getB())
// 输出顺序:计算getA → 计算getB → 3

内容的提问来源于stack exchange,提问作者anandsr-dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:21:02