1 // 1 临时存值
2 var a = 1,b = 2 ,tmp;
3 tmp = a;
4 a = b;
5 b = tmp;
6 //直观,但会增加内存的使用
7
8 // 2 算数换值
9 var a = 1,b = 2;
10 a = a+b;
11 b = a-b;
12 a = a-b;
13 // 存在变量数据溢出问题
14 // 3 es6 解构
15 let a = 1,b = 2;
16 [a,b] = [b,a];
17
18 // 4 利用数组特性
19 var a = 1,b = 2;
20 a = [a.b];
21 b = a[0];
22 a = a[1];
23
24 // 5 利用对象属性
25 a = {a:b,b:a};
26 b = a.b;
27 a = a.a;
28
29 // 6 利用算数优先级
30 a = [b,b=a][0];
31 //据运算符优先级,首先执行b=a,此时的b直接得到了a的变量值,然后一步数组索引让a得到了b的值
32
33 // 7 利用 2进制的异或运算 a^b^b == a
34 var a = 1,b = 2;
35 a = a ^ b;
36 b = a ^ b;
37 a = a ^ b;
38 //十进制转二进制 除2取余,逆序排列