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

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

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

你能改进一下吗?

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


当前回答

只是为了好玩:v = Math.pow(v-1,v)也在1和0之间切换。

其他回答

如果v的可能值只有0和1,那么对于任意整数x,表达式为: v = Math.pow((Math。Pow (x, v) - x), v); 将切换该值。

我知道这是一个丑陋的解决方案,而且OP并没有想要这个…但我在厕所的时候想到了另一个解决方案:P

为了总结另一个答案,一个评论和我自己的观点,我建议结合两件事:

使用一个函数进行切换 在这个函数中使用一个可读性更好的实现

下面是一个函数,你可以把它放在一个库中,也可以把它包装在另一个Javascript框架的插件中。

function inv(i) {
  if (i == 0) {
    return 1
  } else {
    return 0;
  }
}

用法很简单:

v = inv(v);

优点是:

无代码复制 如果您或任何人将来再次阅读这篇文章,您将在最短的时间内理解您的代码。

如果它必须是整数1或0,那么你这样做是好的,尽管括号是不需要的。如果这些a被用作布尔值,那么你可以这样做:

v = !v;

另一种形式的原始解决方案:

v = Number(v == 0);

编辑:感谢TehShrike和Guffa指出了我最初解决方案中的错误。

你可以这样做

v = Math.abs(--v);

自减式将值设置为0或-1,然后Math。Abs将-1转换为+1。