我们中的许多人已经看到/使用以下内容:
var t=!0; (t will equal true)
var t=!1; (t will equal false)
这种评估真/假的方法有多安全?
我看到谷歌一直使用这个。
这些ALWAYS会返回布尔 true / false吗?
感谢。
答案 0 :(得分:4)
是的:
11.4.9逻辑非运算符(!)
制作UnaryExpression :! UnaryExpression评估为 如下:
让expr成为评估UnaryExpression的结果。
让oldValue为ToBoolean(GetValue(expr))。
如果oldValue为true,则返回false。
- 醇>
返回true。
答案 1 :(得分:1)
是的,他们将始终返回true
和false
。
更具体地说,!x
将返回true
任何“falsey”值(undefined
,""
等)并反过来{ {1}} 任何“truthy”值。
更常见的习语是false
,它将任何“假”值转换为严格!!x
,将任何“真实”值转换为严格false
- 换句话说,它就像是“类型转换” “到一个布尔值。