我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
我有两个变量:
var a = 1,
b = 2;
我的问题是如何交换它们?只有这个变量,没有任何对象。
当前回答
您可以使用临时交换变量或XOR。
a = a ^ b
b = a ^ b
a = a ^ b
这只是一个基本的逻辑概念,适用于支持异或操作的每种语言。
编辑:见注释。忘了说,这只适用于整数。假设问题线程中的整数变量
其他回答
使用第三个变量,像这样:
var a = 1,
b = 2,
c = a;
a = b; // must be first or a and b end up being both 1
b = c;
DEMO -使用第三个变量
您可以使用临时交换变量或XOR。
a = a ^ b
b = a ^ b
a = a ^ b
这只是一个基本的逻辑概念,适用于支持异或操作的每种语言。
编辑:见注释。忘了说,这只适用于整数。假设问题线程中的整数变量
因为我听说这个方法运行得比较慢:
b = [a, a = b][0];
如果你计划将你的变量存储在一个对象(或数组)中,这个函数应该工作:
function swapVars(obj, var1, var2){
let temp = obj[var1];
obj[var1] = obj[var2];
obj[var2] = temp;
}
用法:
let test = {a: 'test 1', b: 'test 2'};
console.log(test); //output: {a: 'test 1', b: 'test 2'}
swapVars(test, 'a', 'b');
console.log(test); //output: {a: 'test 2', b: 'test 1'}
我在这里看到了编程奥林匹克。还有一个更棘手的单行解决方案:
b = (function(){ a=b; return arguments[0]; })(a);
小提琴:http://jsfiddle.net/cherniv/4q226/
我们怎么会错过这些经典的俏皮话呢
var a = 1, b = 2
a = ({a:b, _:(b=a)}).a;
And
var a = 1, b = 2
a = (_=b,b=a,_);
最后一个暴露了全局变量“_”,但这并不重要,因为典型的javascript惯例是使用它作为“不在乎”变量。