重複の可能性あり:
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
これはブール値にキャストします。最初のものは!
それを一度否定し、次のように値を変換します。
undefined
にtrue
null
にtrue
+0
にtrue
-0
にtrue
''
にtrue
NaN
にtrue
false
にtrue
- その他の表現
false
そしてもう一方は!
それを再び否定します。ブール値への簡潔なキャストは、ブール値単純!
に否定として定義されるただし、これは条件演算子の条件としてのみ使用され、同じ方法で真偽が判定されるため、ここでは不要です。