【发布时间】:2012-05-10 17:31:43
【问题描述】:
我们中的许多人都看过/使用过以下内容:
var t=!0; (t will equal true)
var t=!1; (t will equal false)
这种评估真/假的方法有多安全?
我看到谷歌一直在使用它。
这些总是会返回 boolean 真/假吗?
谢谢。
【问题讨论】:
标签: javascript shorthand
我们中的许多人都看过/使用过以下内容:
var t=!0; (t will equal true)
var t=!1; (t will equal false)
这种评估真/假的方法有多安全?
我看到谷歌一直在使用它。
这些总是会返回 boolean 真/假吗?
谢谢。
【问题讨论】:
标签: javascript shorthand
是的:
11.4.9 逻辑非运算符 (!)
产生式 UnaryExpression : ! UnaryExpression 被评估为 如下:
设 expr 为计算 UnaryExpression 的结果。
设 oldValue 为 ToBoolean(GetValue(expr))。
如果 oldValue 为 true,则返回 false。
返回真。
【讨论】:
是的,他们总是会返回 true 和 false。
更具体地说,!x 将为 any "falsey" 值(undefined、"" 等)返回 true,反之则为 anyfalse /em> “真实”值。
一个更常见的习惯用法是!!x,它将任何“假”值严格转换为false,并将任何“真实”值严格转换为true——换句话说,它就像一个布尔值的“类型转换”。
【讨论】: