一、借助第三变量

让我们由浅入深,来了解交换变量值的最简单、最初的解决方案:借助于第三个变量


1
2
3
4
5
6
7
8
9
10
11
12
// 声明变量a和b
let a = 5
let b = 4
// 1. 临时将变量a的值赋值给变量tmp
let tmp = a
// 2. 将变量b的值赋值给a
a = b
// 3. 将变量a的值(tmp的值)赋值给b
b = tmp

console.log(a) // 4
console.log(b) // 5

二、利用es6数组结构


1
2
3
4
5
6
7
8
let a = 5;
let b = 4; // 请注意此位置的分号;是一定要存在的呀

// 数组结构赋值,交换变量a,b的值
[a, b] = [b, a]

console.log(a) // 4
console.log(b) // 5

三、利用数组的第二种方式


1
2
3
4
5
let a = 5;
let b = 4;
a = 【b,b = a]【0];
console.log(a) // 4
console.log(b) // 5

四、使用纯数学运算的方式


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let a = 5
let b = 4

// 接下来就是见证神奇的时刻,来,镜头请对准我。

// 二者之和
a = a + b
// 二者之和 - b的值,剩余a的值赋值给变量b
b = a - b
// 此刻a还是二者之和,a - b此刻相当于二者之和 - 变量b(a的值),那么此刻剩余的就是变量b的值,赋值给a变量
a = a - b

// yes, we did!
console.log(a) // 4
console.log(b) // 5

五、使用 位运算符^


1
2
3
4
5
6
7
8
9
10
let a = 5 // 0101
let b = 4 // 0100

// 按位异或运算
a = a ^ b // 0101 ^ 0100 ===> 0001,此时a的值为1
b = a ^ b // 0001 ^ 0100 ===> 0101,此时b的值为5
a = a ^ b // 0001 ^ 0101 ===> 0100,此时a的值为4

console.log(a) // 4
console.log(b) // 5