我有两个变量:

var a = 1,
    b = 2;

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


当前回答

正如你的问题是宝贵的“只有这个变量,没有任何对象。,答案也会弥足珍贵:

Var a = 1, B = 2

a=a+b;
b=a-b;
a=a-b;

这是个诡计 正如罗德里戈·阿西斯所说,它“可以更短”

 b=a+(a=b)-b;

演示: http://jsfiddle.net/abdennour/2jJQ2/

其他回答

我在这里看到了编程奥林匹克。还有一个更棘手的单行解决方案:

b = (function(){ a=b; return arguments[0]; })(a);

小提琴:http://jsfiddle.net/cherniv/4q226/

直到ES5,为了交换两个数字,你必须创建一个临时变量,然后交换它。 但是在ES6中,使用数组解构很容易交换两个数字。看到的例子。

let x,y;
[x,y]=[2,3];
console.log(x,y);      // return 2,3

[x,y]=[y,x];
console.log(x,y);      // return 3,2

了解更多关于JavaScript ES6解构的知识

单行交换

a = a^b^(b^=(a^b));

第一个方法, 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:

var val1 =  117,
    val2 = 327;

val2 = val1-val2; 
console.log(val2);
val1 = val1-val2;
console.log(val1);
val2 = val1+val2;
console.log(val2);