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

Posted black-humor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换两个变量的值,不借助第三个变量的 三种方法(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

效果:

技术分享图片

 


以上是关于交换两个变量的值,不借助第三个变量的 三种方法(JS实现)的主要内容,如果未能解决你的问题,请参考以下文章

不使用第三个变量交换两个变量的值

JavaScript不借助第三个变量交换a,b两个变量值

两个数交换的六种方法

不借助第三个变量实现两个变量交换的思考

不借助第三个变量实现两个变量交换及原理分析

PHP不用第三变量交换2个变量的值的解决方法