我有两个变量:

var a = 1,
    b = 2;

我的问题是如何交换它们?只有这个变量,没有任何对象。


当前回答

第一个方法, Var a = 5, b = 9; A = A - b; B = a + B; A = b - A; console.log (a, b);

第二种方式

Var a = 19, b = 22; [a, b] = [b, a]; console.log (a, b);

简单明了的答案。

其他回答

使用第三个变量,像这样:

var a = 1,
    b = 2,
    c = a;

a = b; // must be first or a and b end up being both 1
b = c;

DEMO -使用第三个变量


现在你终于可以做到:

设a = 5; 令b = 10; [a, b] = [b, a];/ / ES6 console.log (a, b);

从ES6开始,你还可以更优雅地交换变量:

var a = 1,
    b = 2;

[a, b] = [b, a];

console.log('a:', a, 'b:', b); // a: 2 b: 1

我们怎么会错过这些经典的俏皮话呢

var a = 1, b = 2
a = ({a:b, _:(b=a)}).a;

And

var a = 1, b = 2
a = (_=b,b=a,_);

最后一个暴露了全局变量“_”,但这并不重要,因为典型的javascript惯例是使用它作为“不在乎”变量。

ES6解构:

使用数组:[a, b] = [b, a];//我的最爱

使用对象:{a, b} = {a:b, b:a};//也不错