两数交换,使用中间变量很简单,但是不使用中间变量呢?
let a = 9
let b = 6
第一种:巧妙利用加法。只能交换数字
a = a + b // 15
b = a - b // 15 - 6 = 9
a = a - b // 15 - 9 = 6
第二种: 异或(^)即两数不同为1,相同为0。只能交换数字
a = a ^ b // 00001001 ^ 00000110 = 00001111
b = a ^ b // 00001111 ^ 00000110 = 00001001
a = a ^ b // 00001111 ^ 00001001 = 00000110
第三种:ES6的解构赋值。可用于任意数据类型的交换
// 以 () [] / + - 开头的代码需要在前面在分号。
;[b, a] = [a, b]