交換兩個變量的值,不借助第三個變量的 三種方法(JS實現)
阿新 • • 發佈:2018-01-13
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實現)