es6解构赋值[a, b] = [b, a]一行即可安全交换任意类型变量,无需临时变量、不依赖运算、语义清晰;但需用let/var声明,不可用于const或未声明变量。

用 [a, b] = [b, a] 一行搞定,是 ES6 中最优雅、最推荐的变量交换方式。
为什么这行代码就够用了
它不依赖数据类型,不引入临时变量,语义清晰,执行安全:
- 右边
[b, a]先生成一个新数组,按当前值顺序排列 - 左边
[a, b]按索引位置依次接收:索引 0 → a,索引 1 → b - 执行后,a 拿到原 b 的值,b 拿到原 a 的值
支持所有常见类型
数字、字符串、布尔值、对象、数组、null、undefined 都能直接交换:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
✅ 示例:
let a = "hello", b = { x: 1 };<br>
[a, b] = [b, a];<br>
// a → { x: 1 }, b → "hello"
使用前要注意的两个关键点
避免运行时报错,只需记住这两条:
- 变量必须用
let或var声明(const不行,因为交换本质是重新赋值) - 不能对未声明的标识符直接解构(比如
[x, y] = [1, 2]前必须先有let x, y或类似声明)
比老方法强在哪
对比加减法、异或、临时变量等传统方式,解构交换更干净:
- 不用第三个变量,减少命名和作用域干扰
- 不涉及运算,不怕
Infinity、NaN、整数溢出或类型隐式转换 - 可读性强,一眼看懂意图,和其他解构场景(如函数多返回值)风格统一










