【经典题目】js不使用临时变量交换2个变量的值
本文由 小茗同学 发表于 2016-07-28 浏览(2849)
最后修改 2016-07-28 标签:javascript 交换 变量 临时 不使用

说明

这种东西一般都是出现在面试题上面,实际生产环境中很少用,因为性能不见得更优越可读性还更差。

本文属于转载,但是对排版做了优化。

思路一

(function()
{
    var a = 10, b = 2;
    a = a + b;
    b = a - b;
    a = a - b;
    console.log('a:', a, 'b:', b);
})();

思路二

(function()
{
    var a = 10, b = 2;
    a = a ^ b;
    b = b ^ a;
    a = a ^ b;
    console.log('a:', a, 'b:', b);
})();

思路三

(function()
{
    var a = 10, b = 2;
    a = [a, b];
    b = a[0];
    a = a[1];
    console.log('a:', a, 'b:', b);
})();

//简化一下:
(function()
{
    var a = 10, b = 2;
    a = [b, b=a][0];
    console.log('a:', a, 'b:', b);
})();

思路四

(function()
{
    var a = 10, b = 2;
    a = {a : b, b : a};
    b = a.b;
    a = a.a;
    console.log('a:', a, 'b:', b);
})();

思路五

(function()
{
    var a = 10, b = 2;
    a = (function()
    {
        try { return b; }
        finally { b = a; }
    })();
    console.log('a:', a, 'b:', b);
})();

思路六

(function()
{
    var a = 10, b = 2;
    eval("a="+b+";b="+a);
    console.log('a:', a, 'b:', b);
})();

思路七

(function()
{
    var a = 10, b = 2;
    a = b + (b = a) * 0;
    console.log('a:', a, 'b:', b);
})();