1

我们中的许多人已经看到/使用以下内容:

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

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

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

这些总是会返回布尔值真/假吗?

谢谢。

4

2 回答 2

4

是的:

11.4.9 逻辑非运算符 (!)

产生式 UnaryExpression : ! UnaryExpression 的评估如下:

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

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

  3. 如果 oldValue 为真,则返回假。

  4. 返回真。

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

于 2012-05-10T08:10:53.823 回答
1

是的,他们总会回来truefalse

更具体地说,!x返回true任何“虚假”值(、等),反之则返回任何真实”值。undefined""false

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

于 2012-05-10T08:10:26.270 回答