对于true / false,使用var t =!0 / var t =!1有多安全?它们总是返回true布尔值true / false吗?

时间:2012-05-10 08:06:09

标签: javascript shorthand

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

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

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

我看到谷歌一直使用这个。

这些ALWAYS会返回布尔 true / false吗?

感谢。

2 个答案:

答案 0 :(得分:4)

是的:

  

11.4.9逻辑非运算符(!)

     

制作UnaryExpression :! UnaryExpression评估为   如下:

     
      
  1. 让expr成为评估UnaryExpression的结果。

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

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

  6.   
  7. 返回true。

  8.   

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

答案 1 :(得分:1)

是的,他们将始终返回truefalse

更具体地说,!x将返回true 任何“falsey”值(undefined""等)并反过来{ {1}} 任何“truthy”值。

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