JavaScript交换两个变量的值

JavaScript优雅地交换两个变量的值

1
2
let a = 1;
let b = 2;

最最最简单的办法就是使用一个临时变量了:

1
2
3
4
let temp;
temp = a;
a = b;
b = temp;

不过使用临时变量的方法实在是太low了,我们试试如何用一行代码不使用临时变量来交换a,b两个变量的值

首先最简单的,最流氓的暴力写法:

1
console.log(`a = ${b}, b = ${a}`)

皮一下,下面是正经写法 下面的方案都不会有临时变量,我总结了一下,其实不使用临时变量的思路都是让其中一个变量变成一个a和b都有关系的值,这样可以先改变另一个变量值, 最后改变原修改的变量值

1.加法运算

1
b = (a + b) - (a = b)

(也可以换成a和b的差,一样的)不过上面这个方法有个明显的缺点就是有可能溢出

2.运算优先级

1
b = a + 0 \* (a = b)

3.异或位运算操作

1
a ^= b ^ (b = a)

4.数组

1
a = [b, b = a][0]

5.ES6解构赋值

1
[a, b] = [b, a]