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

JavaScript词法作用域疑问:先赋值bob为何输出alice相关结果?

问题原因解析
  • 函数greet里的user是全局变量,它的值不会在函数定义时固定,而是在函数执行时才读取当前的实际值。
  • 你的代码执行顺序是:
    1. 声明user并赋值为空字符串
    2. 定义greet函数(此时函数里的user还未绑定具体值)
    3. 把user改成"bob"
    4. 再把user改成"alice"(这一步直接覆盖了之前的"bob"赋值)
    5. 调用greet函数,此时user的当前值是"alice",所以:
      • console.count(user)会以"alice"为标签计数,输出alice:1
      • 返回的模板字符串会拼接当前的user值,得到hi alice
  • 总结:"bob"这个赋值被后续的"alice"覆盖了,而函数是最后才执行的,自然只会用到user的最终值。

内容的提问来源于stack exchange,提问作者Angus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:20:55