我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
当前回答
我们可以使用IIFE交换两个值,而不需要额外的参数
Var a = 5, b =8; B =(函数(a){ 返回一个 } (a, a = b)); 文档。写("a: "+ a+ " b: "+ 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-b;
a=a-b;
这是个诡计 正如罗德里戈·阿西斯所说,它“可以更短”
b=a+(a=b)-b;
演示: http://jsfiddle.net/abdennour/2jJQ2/
不要使用下面的代码。这不是交换两个变量值的推荐方法(简单地使用临时变量)。它只是展示了一个JavaScript技巧。
这个解决方案不使用临时变量,不使用数组,只添加一次,而且速度很快。 事实上,在一些平台上,它有时比临时变量更快。 它适用于所有数字,从不溢出,并处理边界情况,如无穷大和NaN。
a = b + (b=a, 0)
它分两步工作:
(b=a, 0)将b设置为a的旧值并产生0 A = b + 0将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);
简单明了的答案。
单行交换
a = a^b^(b^=(a^b));