我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
当前回答
我们可以这样交换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已经存在,并且需要交换值:
var c=a, a=b, b=c;
正如@Kay所提到的,这实际上比数组方式执行得更好(几乎是数组方式的2倍)。
单行交换
a = a^b^(b^=(a^b));
我们可以这样交换var:
var val1 = 117,
val2 = 327;
val2 = val1-val2;
console.log(val2);
val1 = val1-val2;
console.log(val1);
val2 = val1+val2;
console.log(val2);
ES6解构:
使用数组:[a, b] = [b, a];//我的最爱
使用对象:{a, b} = {a:b, b:a};//也不错
您可以使用临时交换变量或XOR。
a = a ^ b
b = a ^ b
a = a ^ b
这只是一个基本的逻辑概念,适用于支持异或操作的每种语言。
编辑:见注释。忘了说,这只适用于整数。假设问题线程中的整数变量