1. ホーム
  2. ジャバスクリプト

[解決済み】この「二重否定」のトリックを誰か説明してください。重複

2022-04-29 03:32:30

質問

私は決してJavascriptの専門家ではありませんが、Mark Pilgrimの "Dive into HTML5" のページで、私がもっと理解したいことに言及しています。

と述べている。

最後に、二重否定のトリックを使って、結果を強制的にブール値(真または偽)にするのです。

function supports_canvas() {
  return !!document.createElement('canvas').getContext;
}

どなたかもう少しうまく説明できる方がいらっしゃいましたら、ぜひ教えてください。

どのように解決するのですか?

論理NOT演算子 ! は、値を論理値の逆であるブール値に変換する。

2番目の ! は、前の論理結果を元の論理値のブーリアン表現に戻す。

このドキュメントから 論理 NOT 演算子について。

<ブロッククオート

単一オペランドが真に変換できる場合は偽を、そうでない場合は真を返します。

ということは、もし getContext は "falsey"値を与えます。 !! はブール値を返すようにします。 false . そうでない場合は true .

"falsey"の値は、以下の通りです。

  • false
  • NaN
  • undefined
  • null
  • "" (空の文字列)
  • 0