JavaScript の二重否定 (!!) - 目的は何ですか? [重複] 質問する

JavaScript の二重否定 (!!) - 目的は何ですか? [重複] 質問する

重複の可能性あり:
JavaScript の !! (not not) 演算子とは何ですか?

私は次のようなコードに遭遇しました:

function printStackTrace(options) {
    options = options || {guess: true};
    var ex = options.e || null, guess = !!options.guess;
    var p = new printStackTrace.implementation(), result = p.run(ex);
    return (guess) ? p.guessAnonymousFunctions(result) : result;
}

そして、なぜ二重否定なのか疑問に思わずにはいられませんでした。また、同じ効果を達成する別の方法はあるのでしょうか?

(コードはhttps://github.com/eriwen/javascript-stacktrace/blob/master/stacktrace.js をご覧ください。

ベストアンサー1

これはブール値にキャストします。最初のものは!それを一度否定し、次のように値を変換します。

  • undefinedtrue
  • nulltrue
  • +0true
  • -0true
  • ''true
  • NaNtrue
  • falsetrue
  • その他の表現false

そしてもう一方は!それを再び否定します。ブール値への簡潔なキャストは、ブール値単純!否定として定義されるただし、これは条件演算子の条件としてのみ使用され、同じ方法で真偽が判定されるため、ここでは不要です。

おすすめ記事