1. 程式人生 > >交換兩個變量的值,不借助第三個變量的 三種方法(JS實現)

交換兩個變量的值,不借助第三個變量的 三種方法(JS實現)

clas img 進行 blog 算法 並且 pos 成交 方法

第一種:算術運算法

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

效果:

技術分享圖片

交換兩個變量的值,不借助第三個變量的 三種方法(JS實現)