如何更优雅地交换a和b的值?

数据交换在我们平时代码中是很常见。通常都是使用一个中间临时变量,来实现。

var a=3,b=5;
var temp;

temp = a;
a = b;
b = temp;

相信大家平时这使用很是常见,但是个人觉得应该有优雅的方法。

例如:

var a=3,b=5;
a = [b,b=a][0];

不知道有没有别的有意思的方法?


最新的es6可以这样写

在firefox控制台下可以测试

var a = 3,b = 5;
[a,b] = [b,a];

>>a=5
>>b=3

关于效率

对以下两种做了1亿次执行

var swap1 = function(a,b){
    var temp;
    temp = a;
    a=b;
    b=temp;
}

var swap1 = function(a,b){
    a=[a,a=b][0];
}

分别执行时间为

第一种方式, real:0.128s
第二种方式, real:0.930s

从效率上来说,第一种方式效率较高,不过对于亿级别的计算,一般使用,差异极小。

阅读 10.5k
评论
    20 个回答
    a = a ^ b; b = b ^ a; a = a ^ b;