【问题标题】:How safe is using var t=!0 / var t=!1 for true / false? Do they always return true boolean true / false?使用 var t=!0 / var t=!1 表示真/假有多安全?他们总是返回真布尔真/假吗?
【发布时间】:2012-05-10 17:31:43
【问题描述】:

我们中的许多人都看过/使用过以下内容:

var t=!0; (t will equal true)
var t=!1; (t will equal false)

这种评估真/假的方法有多安全?

我看到谷歌一直在使用它。

这些总是会返回 boolean 真/假吗?

谢谢。

【问题讨论】:

    标签: javascript shorthand


    【解决方案1】:

    是的:

    11.4.9 逻辑非运算符 (!)

    产生式 UnaryExpression : ! UnaryExpression 被评估为 如下:

    1. 设 expr 为计算 UnaryExpression 的结果。

    2. 设 oldValue 为 ToBoolean(GetValue(expr))。

    3. 如果 oldValue 为 true,则返回 false。

    4. 返回真。

    来源:http://es5.github.com/x11.html#x11.4.9

    【讨论】:

      【解决方案2】:

      是的,他们总是会返回 truefalse

      更具体地说,!x 将为 any "falsey" 值(undefined"" 等)返回 true,反之则为 anyfalse /em> “真实”值。

      一个更常见的习惯用法是!!x,它将任何“假”值严格转换为false,并将任何“真实”值严格转换为true——换句话说,它就像一个布尔值的“类型转换”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        • 2011-09-22
        • 1970-01-01
        • 2013-06-11
        • 2020-01-21
        相关资源
        最近更新 更多