【发布时间】:2017-09-09 07:39:40
【问题描述】:
如果我有一个
x = 5;
y = 6;
如何在没有中间附加变量的情况下设置这样的结果。
x = 6;
y = 5;
【问题讨论】:
标签: javascript
如果我有一个
x = 5;
y = 6;
如何在没有中间附加变量的情况下设置这样的结果。
x = 6;
y = 5;
【问题讨论】:
标签: javascript
1) 只有使用数学运算才能做到这一点。将总和保存到第一个变量中。然后在第二个中保留总和与当前值的差,这将给出第一个值。在此之后,在第一个变量中保留总和和秒值的差值,这将为您提供第一个值。
let x = 5;
let y = 6;
console.log(`x is ${x}, y is ${y}`);
x = x + y;
y = x - y;
x = x - y;
console.log(`x is ${x}, y is ${y}`);
2) 使用语言功能,您可以通过 Array Destructuring 来实现。
let x = 5;
let y = 6;
console.log(`x is ${x}, y is ${y}`);
[x, y] = [y, x];
console.log(`x is ${x}, y is ${y}`);
3) 如果数字是整数,则使用著名的XOR swap algorithm。
let x = 5;
let y = 6;
console.log(`x is ${x}, y is ${y}`);
x = x ^ y;
y = x ^ y;
x = x ^ y;
console.log(`x is ${x}, y is ${y}`);
【讨论】:
使用es2015你可以做到
[x,y] = [y,x]
【讨论】:
1) 您可以使用第三个变量来交换 x 和 y 值。所以,如果第三个变量是 temp.
第一步 temp = x
第二步 x = y
第三步 y = temp
var x = 5;
var y = 6;
var temp = 0;
temp = x;
x = y;
y = temp;
console.log('x =',x);
console.log('y =',y);
2) ES6
var x = 5,
y = 6;
[x, y] = [y, x];
console.log('x =', x, 'y =', y);
【讨论】: