var a = 1;
var b = 2;
//如何不使用第三个变量,完成a和b数值的交换。
方法一:
a = a + b // a = 3
b = a - b // b = 3 - 2 = 1
a = a - b // a = 3 -1 = 2
方法二:
a = a^b //求a,b的异或 (将a与b转换成二进制,相同取0 不同取1)
a = 0001 //a的二进制
b = 0010 //b的二进制
a = a^b = 0011 // a的作用是存放 a与b的差异的 a^b 前两位是0 说明 二进制a、b前两位相同、后两位是1 说明 二进制a、b后两位不同。
b = a^b // 0011^0010 = 0001 //1
a = a^b // 0011^0001 = 0010 //2
方法三:
//使用es6的数组的解构赋值
[b,a] = [a,b]