我们中的许多人已经看到/使用以下内容:
var t=!0; (t will equal true)
var t=!1; (t will equal false)
这种评估真/假的方法有多安全?
我看到谷歌一直在使用它。
这些总是会返回布尔值真/假吗?
谢谢。
我们中的许多人已经看到/使用以下内容:
var t=!0; (t will equal true)
var t=!1; (t will equal false)
这种评估真/假的方法有多安全?
我看到谷歌一直在使用它。
这些总是会返回布尔值真/假吗?
谢谢。
是的:
11.4.9 逻辑非运算符 (!)
产生式 UnaryExpression : ! UnaryExpression 的评估如下:
令 expr 为计算 UnaryExpression 的结果。
让 oldValue 为 ToBoolean(GetValue(expr))。
如果 oldValue 为真,则返回假。
返回真。
是的,他们总会回来true
的false
。
更具体地说,将!x
返回true
任何“虚假”值(、等),反之则返回任何“真实”值。undefined
""
false
一个更常见的习惯用法是!!x
将任何“虚假”值转换为严格false
,任何“真实”值转换为严格true
- 换句话说,它就像一个布尔值的“类型转换”。