我有两个变量:

var a = 1,
    b = 2;

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


当前回答

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

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

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

DEMO -使用第三个变量


其他回答

虽然前面给出了同样的答案,但这里有一个png来描述它。

最简单的形式:

我们可以这样交换var:

var val1 =  117,
    val2 = 327;

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

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

Var a = 1, B = 2

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

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

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

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

下面是交换两个变量值的一行代码。 给定变量a和b:

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

演示如下:

var = 1, b = 2, 输出= . getelementbyid(“输出”); 输出。innerHTML="<p>原来:"+a+", "+b+"</p>"; //交换变量a和b的值 B = [a, a = B][0]; 输出。innerHTML+="<p>交换:"+a+", "+b+"</p>"; < div id = "输出" > < / div >

ES6 (Firefox和Chrome已经支持它 数组匹配)):

设a = 5, b = 6; [a, b] = [b, a]; console.log(“${一}$ {b}”);