看到一些其他语言关于交换两个变量值的问题,特地总结了一下适合js交换两个变量的方法及优缺点。
1,借助第三方变量
优点:适用于各种类型的值
缺点:需要借助第三方变量
let m = 12;
let n = 5
let k = m;
m = n; //m=5,n=5
n = k; //m=5,n=12
2,运算符
优点:不用借助第三方变量
缺点:两数相加可能超出数字范围,仅适用于数字
let m = 12;
let n = 5
m = m + n; //m=17,n=5
n = m - n; //m=17,n=12
m = m - n; //m=5,n=12
3,异或
优点:不用借助第三方变量
缺点:仅适用于数字
let m = 12;
let n = 5
m = m ^ n; //m=9,n=5
n = m ^ n; //m=9,n=12
m = m ^ n; //m=5,n=12
4,解构
优点:不用借助第三方变量,适用于各种类型的值
缺点:旧版本浏览器不兼容
let m = 12;
let n = 5
[n, m] = [m, n]; //m=5,n=12