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

JavaScript中变量交换代码里(a, a=b)参数的作用解析

拆解变量交换代码中(a, a=b)的工作机制

嘿,这个问题挺巧妙的!咱们一步步来拆解这段代码里(a, a=b)的运作逻辑,核心在于JavaScript里函数实参的求值顺序和赋值表达式的特性。

先假设初始状态:a = 2,b = 4,咱们跟着代码的执行流程走一遍:

1. 函数调用的实参求值顺序

代码里的函数调用是:(function(a){return a})(a, a=b)
这里的逗号是参数分隔符,不是逗号运算符。JavaScript会严格按照从左到右的顺序,先给所有实参求值,再执行函数:

  • 第一个实参a:此时取的是变量a的原始值2,这个值会被传递给函数内部的形参a。
  • 第二个实参a=b:这是一个赋值表达式,它会把当前b的值4赋给a——执行完这一步,a的值就变成4了。同时,赋值表达式的返回值是被赋的值4,但因为函数只定义了一个形参,这个返回值不会被函数使用,但关键是赋值操作已经完成。

2. 函数执行与最终赋值

函数function(a){return a}会直接返回形参a的值,也就是第一步里保存的原始a值2。最后把这个返回值赋值给b,此时b的值就变成2。

最终结果:a=4,b=2,完美完成了两个变量的值交换。

关键点总结

(a, a=b)的核心作用是分两步完成交换的前置操作:

  • 先“留存”原始的a值,让函数能返回它给b;
  • 再把b的值赋给a,更新a的内容。

这种写法利用了JS参数求值的顺序特性,算是一种比较巧妙(但可读性不算高)的变量交换技巧。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:28:12