我想在0和1之间切换一个变量。如果是0,我就设它为1,如果是1,我就设它为0。

这是一个非常基本的运算,我经常写,我想研究一下最短,最清晰的方法。这是我目前为止最好的:

v = (v == 0 ? 1 : 0);

你能改进一下吗?

编辑:这个问题问的是如何在保持清晰的情况下用最少的字符写出上面的语句——为什么这“不是一个真正的问题”?这并不是一个代码-高尔夫练习,尽管一些有趣的答案来自于把它当作高尔夫的人——很高兴看到高尔夫以一种建设性和发人深省的方式被使用。


当前回答

另一种说法是:

v = ~(v|-v) >>> 31;

其他回答

因为这是JavaScript,我们可以使用一元的+转换为int:

v = +!v;

这将在逻辑上不是v的值(如果v == 0则为真,如果v == 1则为假)。然后我们将返回的布尔值转换为相应的整数表示。

v=!v;

对于v=0和v=1都成立;切换状态;

v = v == 0 ? 1 : 0;

够了!

定义一个数组{1,0},将v设为v[v],因此值为0的v变为1,反之亦然。

未经测试,但如果你是布尔,我认为var v = !v将工作。

参考:http://www.jackfranklin.co.uk/blog/2011/05/a-better-way-to-reverse-variables