JavaScript中可用数组解构赋值交换两个已声明变量的值,无需临时变量或算术运算,如[a, b] = [b, a];支持数字、字符串、布尔值、对象引用等类型,但未声明变量直接解构会报错。

在 JavaScript 中,用解构赋值交换两个变量的值非常简洁,**不需要临时变量,也不需要算术运算**。
基本写法:一行搞定
直接用数组解构,把两个变量“位置互换”即可:
let a = 10; let b = 20; [a, b] = [b, a]; // 交换完成 console.log(a); // 20 console.log(b); // 10
原理是右边先生成一个新数组 [b, a](此时值已确定),再按顺序赋值给左边的变量 a 和 b。
适用于多种数据类型
解构交换不限于数字,字符串、布尔值、对象引用、甚至 null 和 undefined 都可以:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
let x = "hello", y = true; [x, y] = [y, x];→x变成true,y变成"hello" -
let obj1 = {}, obj2 = []; [obj1, obj2] = [obj2, obj1];→ 引用交换,不拷贝内容
注意:不能用于未声明变量的直接交换
下面写法会报错:
[a, b] = [b, a]; // ReferenceError: Cannot access 'a' before initialization
因为 a 和 b 还没声明。正确做法是先声明(用 let 或 const),再解构交换。若用 const 声明,则只能交换一次(后续不能再赋值)。
函数内交换或返回交换后的值
也可以封装成函数,但要注意:解构本身不改变原变量,需显式赋值:
function swap([x, y]) {
return [y, x];
}
let a = 1, b = 2;
[a, b] = swap([a, b]); // 调用后 a=2, b=1

















