我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
当前回答
从ES6开始,你还可以更优雅地交换变量:
var a = 1,
b = 2;
[a, b] = [b, a];
console.log('a:', a, 'b:', b); // a: 2 b: 1
其他回答
不要使用下面的代码。这不是交换两个变量值的推荐方法(简单地使用临时变量)。它只是展示了一个JavaScript技巧。
这个解决方案不使用临时变量,不使用数组,只添加一次,而且速度很快。 事实上,在一些平台上,它有时比临时变量更快。 它适用于所有数字,从不溢出,并处理边界情况,如无穷大和NaN。
a = b + (b=a, 0)
它分两步工作:
(b=a, 0)将b设置为a的旧值并产生0 A = b + 0将A设置为b的旧值
我在这里看到了编程奥林匹克。还有一个更棘手的单行解决方案:
b = (function(){ a=b; return arguments[0]; })(a);
小提琴:http://jsfiddle.net/cherniv/4q226/
我们可以这样交换var:
var val1 = 117,
val2 = 327;
val2 = val1-val2;
console.log(val2);
val1 = val1-val2;
console.log(val1);
val2 = val1+val2;
console.log(val2);
下面是交换两个变量值的一行代码。 给定变量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 >
下面是一行代码,假设a和b已经存在,并且需要交换值:
var c=a, a=b, b=c;
正如@Kay所提到的,这实际上比数组方式执行得更好(几乎是数组方式的2倍)。