切换变量javascript的值

时间:2013-03-08 15:02:21

标签: javascript

我有两个变量M& N并且在我的循环中有一定条件我希望在NM之间切换MxN = M * N; N = MxN/N; 的值。所以我想到了以下代码

M

Ncounter = 2; N = counter % 2 == 0 ? M : N; counter++; 的值可能是2 000 000 000.因此我有疑问。这是一个很好的变体,可以在如此巨大的价值之间切换,也可能更好(更快)到

{{1}}

修改 对不起,我没有提到我不想影响M
的价值 谢谢大家)

3 个答案:

答案 0 :(得分:2)

有很多方法。

1 http://jsfiddle.net/8NvVf/

m -= n
n += m
m = n - m

2 http://jsfiddle.net/eQGwL/(仅适用于FireFox和Rhino)

[n, m] = [m, n]

3 http://jsfiddle.net/4MQXe/

m = (n += m -= n) - m

修改

如果您不想更改m的值,则需要一个临时值。

http://jsfiddle.net/Yjkn3/

var n = 5
var m = 8
var t = n

for (var i = 0; i < 10; ++i) {
    if(n != m) n = m
    else n = t
    console.log(n + ' ' + m)
}

答案 1 :(得分:1)

两种方法都怀疑是整数溢出(前者也是精确错误)。为什么不限制计数器的范围并采用第二种方法?

state = 0;
switch (state) {
case 0:
    // ...
    break;
case 1:
    // ...
    break;
// ...
}

state = state < maxState ? state + 1 : 0;

由您来优化此功能,但请记住可读性和可维护性。此switch的替代方法是使用数组。

对于两个变量,请不要在尝试交换变量时弄乱xor黑客,只需写下您想要的内容:

var temp = N;
N = M;
M = N;

答案 2 :(得分:0)

交换两个值的经典技巧是使用XOR:

x = x xor y
y = x xor y
x = x xor y