【问题标题】:How to toggle a boolean?如何切换布尔值?
【发布时间】:2012-07-21 05:01:34
【问题描述】:

有没有一种非常简单的方法可以在 javascript 中切换布尔值?

到目前为止,除了编写自定义函数之外,我最好的方法是三元:

bool = bool ? false : true;

【问题讨论】:

    标签: javascript boolean toggle


    【解决方案1】:
    bool = !bool;
    

    这适用于大多数语言。

    【讨论】:

    • 非常好的解决方案,我使用的是:test = (test == true)?假:真;
    • 这个需要初始化,有没有不用初始化的方法。虽然这适用于对象属性。
    • @user2846569,如果您切换布尔值,这意味着该变量本质上已经被初始化。我想你可以将其扩展为 bool = !bool || true; 以获得默认值。
    • @Jordan 导致 ReferenceError
    • J.B 想要一元语句而不是二元语句。也许它可能是布尔值!或!!布尔。但到目前为止,我从未见过这样的语法。我同意乔丹的观点。已经这么短了。
    【解决方案2】:

    如果您不介意将布尔值转换为数字(即 0 或 1),则可以使用 the Bitwise XOR Assignment Operator。像这样:

    bool ^= true;   //- toggle value.
    

    如果您使用长的、描述性的布尔名称,这特别好,例如:
    let inDynamicEditMode   = true;     // Value is: true (boolean)
    inDynamicEditMode      ^= true;     // Value is: 0 (number)
    inDynamicEditMode      ^= true;     // Value is: 1 (number)
    inDynamicEditMode      ^= true;     // Value is: 0 (number)
    

    这对我来说比在每一行中重复变量更容易扫描。

    此方法适用于所有(主要)浏览器(和大多数编程语言)。

    【讨论】:

    • 由于无论如何都会重铸为整数,所以可以简化为:bool ^= 1
    • 由于该值被转换为数字,您将无法再执行bool === falsebool === true。它可能会破坏现有代码,所以要小心。
    【解决方案3】:
    bool = bool != true;
    

    其中一种情况。

    【讨论】:

      【解决方案4】:
      bool === tool ? bool : tool
      

      如果tool(另一个布尔值)具有相同的值,您希望该值保持为真

      【讨论】:

        【解决方案5】:

        让我们看看实际效果:

        var b = true;
        
        console.log(b); // true
        
        b = !b;
        console.log(b); // false
        
        b = !b;
        console.log(b); // true

        无论如何,there is no shorter way than what you currently have.

        【讨论】:

          【解决方案6】:

          我正在寻找一种切换方法,它的作用相同,但它会将初始值 nullundefined 切换为 false

          这里是:

          booly = !(booly != false)
          

          【讨论】:

            【解决方案7】:

            如果您可能将 true/false 存储为字符串,例如在 localStorage 中,该协议在 2009 年翻转为多对象存储,然后仅在 2011 年翻转回字符串 - 您可以使用 JSON.parse 来解释动态布尔值:

            this.sidebar = !JSON.parse(this.sidebar);
            

            【讨论】:

            • 如果变量具有不同的真/假值,例如“是”/“否”,我使用sidebar = (sidebar == trueValue) falseValue : trueValue;
            【解决方案8】:

            我一直喜欢布尔值,但现在我使用二进制是为了方便和调试。您可以使用 de consept !key : ++key: --key 进行切换,如果您在任何异步函数中或任何时候发生错误或假真,该值将从 0(零)/ 1(一)泄漏,您可以触发警报以稍后调试。

            【讨论】:

              【解决方案9】:
              bool = !0;  //true
              bool = !1;  //false
              

              【讨论】:

              • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
              • 什么都没有切换...您只是手动设置值。
              猜你喜欢
              • 2021-09-02
              • 1970-01-01
              • 2017-09-27
              • 2021-02-24
              • 2011-06-03
              • 1970-01-01
              • 2018-05-16
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多