【问题标题】:How can I easily set a variable to false with a default of true?如何轻松地将变量设置为 false,默认值为 true?
【发布时间】:2013-05-02 18:24:57
【问题描述】:

我通常是这样设置对象属性的,

// Boolean
this.listening = config.listening || true;

但是config.listening 要么为真要么为假,在这种情况下this.listening 将始终为真,因为如果config.listening 为假,它将等于真。

有没有更好的方法来设置这些布尔属性而无需执行 if 语句?

javascript中是否有一个if isset函数来检查它是否存在而不是它等于什么?

【问题讨论】:

    标签: javascript properties boolean


    【解决方案1】:

    您可以像这样使用三元(条件)运算符:

    this.listening = config.listening === false ? false : true;
    

    如果config.listeningfalse,则this.listening 设置为false。如果是其他值,则设置为true

    如果你想检查它是否被定义,你可以使用:

    this.listening = typeof config.listening !== "undefined"
    

    参考资料:

    【讨论】:

    • 哈哈。 Webstorm 只是简化了您的答案: config.listening !== false ,似乎是正确的。
    • @AlexMills 你完全正确!压缩绝对是可能的,我写这篇文章时只是想明确/描述性(我猜)
    • 我更喜欢明确的,你应该保留你的答案
    【解决方案2】:

    您需要检查以确保它不是未定义的,而不是“假”值。

    this.listening = config.listening!==undefined ? config.listening : true;
    

    【讨论】:

    • ... 或 'listening' in config 可能
    • typeof config.listening !== "undefined" 会更好还是这只是一个可读性因素
    • 是的,这样会更好。 (或配置中的“监听”)。有关此事的讨论,请参阅此问题:stackoverflow.com/questions/519145/…
    • typeof 不会“更好”,除非你害怕旧版浏览器中的某个人会劫持你的 undefined。
    • 在现代浏览器中直接测试的运行速度也比 typeof 快
    猜你喜欢
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    相关资源
    最近更新 更多