例如有a=1,b=2,需要将他们的值交换,常规方式肯定是使用一个中间变量

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

但如果要求不能使用中间变量呢?其实也可以实现的

1
2
3
4
5
6
7
8
9
10
11
12
// 算数方式,记录两数的和
a = a + b
b = a - b
a = a - b

// 亦或方式,异或运算的结果是两个二进制数的差异,记录两数的差异
a = a ^ b
b = a ^ b
a = a ^ b

// 解构方式
[a, b] = [b, a]