我有两个变量:

var a = 1,
    b = 2;

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


当前回答

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

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

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

其他回答

您可以使用临时交换变量或XOR。

a = a ^ b
b = a ^ b
a = a ^ b

这只是一个基本的逻辑概念,适用于支持异或操作的每种语言。

编辑:见注释。忘了说,这只适用于整数。假设问题线程中的整数变量

var a = 5;
var b = 10;

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

//or
b = [a, b];
a = b[1];
b = b[0];


alert("a=" + a + ',' + "b=" + b);

删除或注释2 //or并使用一组代码运行

http://jsfiddle.net/USdv8/57/

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

最简单的形式:

下面是交换两个变量值的一行代码。 给定变量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 >

let a = 2, b = 4;
[b, a] = [a, b];

更详细的方法是

let a = 2, b = 4;
a = [a, b];
b = a[0];
a = a[1];