使用 var t=!0 / var t=!1 表示真/假有多安全?他们是否总是返回真正的布尔值真/假

How safe is using var t=!0 / var t=!1 for true / false? Do they always return true boolean true / false?

本文关键字:var 是否 返回 布尔值 他们是 表示 使用 安全 他们      更新时间:2023-09-26

我们中的许多人都见过/使用以下方法:

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

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

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

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

谢谢。

是的:

11.4.9 逻辑非运算符 ( !

生产一元表达式:!一元表达式的计算公式为 遵循:

  1. 让 expr 是计算 UnaryExpression 的结果。

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

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

  4. 返回 true。

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

是的,它们将始终返回truefalse

更具体地说,!x将返回任何"假"值(undefined""等)的true,反之,为任何"真"值返回false

一个更常见的成语是!!x它将任何"假"值转换为严格false,将任何"真实"值转换为严格true - 换句话说,它就像布尔值的"类型转换"。