javascript可用数组解构赋值一行交换变量:[a, b] = [b, a];本质是先计算右侧数组再按位置赋值,支持字符串、数组等可迭代对象,但右侧不可为null/undefined,且不能误用对象解构。

JavaScript 中可以通过数组解构赋值一行代码完成两个变量的交换,无需临时变量。
基本写法:用数组解构交换
把两个变量放在方括号中,右侧也用一个包含相同顺序值的数组(或可迭代对象),引擎会按位置自动赋值:
- let a = 1, b = 2;
[a, b] = [b, a]; // 交换后 a 是 2,b 是 1 - 本质是先计算右侧
[b, a]得到新数组[2, 1],再将元素依次解构赋给左侧变量
适用多种数据类型
只要右侧表达式返回的是可迭代值(如数组、字符串、类数组对象),就能用类似方式交换:
- let x = 'hello', y = 'world';
[x, y] = [y, x]; // x 变成 'world',y 变成 'hello' - const arr = [10, 20];
[arr[0], arr[1]] = [arr[1], arr[0]]; // 直接交换数组内元素
注意点:右侧必须是可迭代对象
不能直接写 [a, b] = b, a(语法错误),也不能省略方括号。常见错误包括:
- 漏掉右侧的中括号 → 报错
Unexpected token - 右侧是 null 或 undefined → 解构失败,报错
Cannot destructure property - 想交换对象属性时误用对象解构(如
{a, b} = {b, a})→ 这不是交换,而是尝试读取不存在的属性
对比传统方法
不用解构时通常要借助临时变量:
- let tmp = a;
a = b;
b = tmp; - 虽然也能用算术运算(如
a = a + b; b = a - b; a = a - b),但仅适用于数字且有溢出/精度风险 - 解构方式更简洁、通用、易读,是现代 JS 推荐做法
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











