javascript数组解构赋值可简洁实现多变量交换,无需临时变量;基础如[a, b] = [b, a],扩展支持多变量重排、轮换及嵌套交换,并可结合默认值与剩余元素提升鲁棒性。

JavaScript数组解构赋值让多变量交换变得极其简洁,无需临时变量,一行代码即可完成。
基础交换:两个变量互换
传统方式需要借助中间变量,而解构赋值直接用数组模式匹配实现“对调”:
✅ 正确写法:let a = 1, b = 2;
[a, b] = [b, a]; // a → 2,b → 1
本质是先计算右侧数组 [b, a](此时 a、b 值未变),再按顺序赋给左侧变量。不依赖中间变量,语义清晰。
扩展交换:多个变量轮换或重排
解构不限于两两交换,可灵活调整顺序,实现多变量重新赋值:
✅ 示例(三变量右移):let x = 10, y = 20, z = 30;
[x, y, z] = [z, x, y]; // x→30, y→10, z→20
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
只要左右两侧数组长度一致,元素可任意排列。适合循环移位、翻转、提取特定位置值等场景。
注意边界:避免常见误用
解构交换看似简单,但需留意几个关键点:
- 左侧必须是可解构的绑定模式(如变量名、带默认值的变量),不能是已声明的普通赋值表达式
- 右侧必须是可迭代对象(通常是数组),
null或undefined会报错 - 若变量未声明,需用
let/const;若已声明,确保不是const重新赋值(const 变量本身不可重赋值,但解构时若为 const 声明的变量,仍可参与解构赋值) - 嵌套结构也可交换,例如
[arr[0], obj.key] = [obj.key, arr[0]],但可读性下降,建议拆分处理
实用技巧:结合默认值与剩余元素
在交换同时处理缺失或多余数据,提升鲁棒性:
✅ 带默认值的安全交换:let m, n;
[m, n] = [undefined, 5] || [0, 0]; // 避免 undefined 赋值
// 更稳妥写法:
[m, n] = ([undefined, 5] ?? [0, 0]);
配合扩展运算符还能交换“部分值”:
✅ 提取并交换前两项,保留其余:let nums = [1, 2, 3, 4, 5];
let [first, second, ...rest] = nums;
nums = [second, first, ...rest]; // [2, 1, 3, 4, 5]
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










