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

请教alert()函数在变量赋值语句中的执行机制

JavaScript中alert()在变量语句中执行的机制解释

先看你给出的代码:

var a = 'hello'-alert('hi'); // a is Not-a-Number and pops up 'hi'
var b = 'world';-alert('ok'); // b is 'world' and pops up 'ok'

核心逻辑拆解如下:

  1. alert()的本质特性
    alert()是一个带副作用的函数——执行时一定会弹出提示框,而且它的返回值永远是undefined。只要JS引擎需要计算它的返回值,就会先执行这个函数,触发弹窗。

  2. 两段代码的具体执行流程

  • 第一段代码:var a = 'hello'-alert('hi')
    JS中减法运算符-需要先计算左右两边的操作数。所以引擎会优先执行alert('hi'),弹出'hi'并得到返回值undefined。接下来计算'hello' - undefined:字符串'hello'转数字会变成NaN,undefined转数字也是NaN,NaN - NaN的结果还是NaN,因此变量a最终为NaN。

  • 第二段代码:var b = 'world';-alert('ok')
    这里的分号是语句结束标记,var b = 'world'是完整的赋值语句,执行后b的值就是'world'。后面的-alert('ok')是独立的一元表达式:引擎先执行alert('ok')弹出提示框,得到返回值undefined,再对这个值做一元负号运算(结果为NaN),但这个结果没有赋值给任何变量,所以b的值不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:18:20