交换两个变量的值,不借助第三个变量的 三种方法(JS实现)

第一种:算术运算法

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

效果:

 

posted @ 2018-01-13 15:14  黑默  阅读(1247)  评论(1编辑  收藏  举报