第一种:算术运算法
var a = 10;
var b = 12;
a = b - a;
b = b - a;
a = b + a;
它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。
具体过程:第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;第三句“a=b+a”求出b到原点的距离(a到原点距离与ab两点距离之和),并且将其保存在a中。完成交换。
效果:
第二种:借助数组
原理不必多说,借助数组的下标及运算符的优先级实现
var a = 1,b = 2;
a = [b, b = a][0];
效果:
第三种:位运算
var a = 1, b = 2;
a ^= b; // a =a ^ b = 1 ^ 2 = 3
b ^= a; // b = b ^ (a ^ b) = 2 ^ (1 ^ 2) = 1
a ^= b;
原理:
^运算符跟|类似,但有一点不同的是 如果两个操作位都为1的话,结果产生0。
1的二进制表示为 0 0 0 0 0 0 1
3的二进制表示为 0 0 0 0 0 1 1
所以 1 ^ 3的结果为2
效果: