1

私たちの多くは、次のものを見たり使用したりしています。

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

真偽を評価するこの方法はどの程度安全ですか?

私はグーグルがこれをいつも使っているのを見ます。

これらは常にブール値の true / falseを返しますか?

ありがとう。

4

2 に答える 2

4

はい:

11.4.9 論理否定演算子 ( ! )

プロダクション UnaryExpression : ! UnaryExpression は次のように評価されます。

  1. UnaryExpression を評価した結果を expr とします。

  2. oldValue を ToBoolean(GetValue(expr)) とします。

  3. oldValue が true の場合、false を返します。

  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 に答える