我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
当前回答
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/
其他回答
现在你终于可以做到:
设a = 5; 令b = 10; [a, b] = [b, a];/ / ES6 console.log (a, b);
单行交换
a = a^b^(b^=(a^b));
不要使用下面的代码。这不是交换两个变量值的推荐方法(简单地使用临时变量)。它只是展示了一个JavaScript技巧。
这个解决方案不使用临时变量,不使用数组,只添加一次,而且速度很快。 事实上,在一些平台上,它有时比临时变量更快。 它适用于所有数字,从不溢出,并处理边界情况,如无穷大和NaN。
a = b + (b=a, 0)
它分两步工作:
(b=a, 0)将b设置为a的旧值并产生0 A = b + 0将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/
ES6 (Firefox和Chrome已经支持它 数组匹配)):
设a = 5, b = 6; [a, b] = [b, a]; console.log(“${一}$ {b}”);