答えて
スクリプトがWebブラウザで実行されているかどうかをテストすることです。 Webページで
、などwindow
など、いくつかの組み込みオブジェクトが存在する、(Node.jsのような)他の環境がwindow
を持っていませんが、console
のような他のオブジェクトを持っているかもしれない(まあ、console
は現在、今ではほとんどのブラウザでは存在するが、それはもともとではありませんでした)。
これは、コードが典型的なブラウザ環境(ブラウザDOMを持つ環境など)で実行されているのか、他のJS環境で実行されているのかを検出するために使用できますnode.jsのようなもの、あるいはブラウザのwebWorkerさえあるもの。
window
オブジェクトが存在しない場合は、
typeof window === 'undefined'
ので、あなたがについて尋ねコード:window
オブジェクトは、トップレベルの変数として存在しない場合
if (typeof window !== 'undefined')
がif
ブロックを実行します。
あなたがリンクしている特定のコードでは、ブラウザ以外の環境でプラグインが使用された場合は、document
のようなDOMオブジェクトを参照するブラウザターゲットコードを実行しないようにします。
@dandavis - 'Workers() 'に関するあなたのコメントはどこから来たのですか?私は「労働者」について何も言わなかった。 – jfriend00
@dandavis - 私はwebWorkerコードがこの質問と何をしているのか理解していません。申し訳ありませんが、私はあなたのコメントを理解していません。このコードはブラウザのような 'window'オブジェクトの存在を検出します。 DOMとそれに関連するオブジェクトが存在する可能性がある(対してnode.jsではない)場合はそれだけではわかりますが、自分の環境について知りたいことをすべて伝えることはできません。環境内のいくつかの他のものは、他のテスト(質問の対象ではない)を必要とするかもしれません。また、参照されている特定のコードでは、DOMを使用できるかどうかを判断するために使用されます。 – jfriend00
少しのポイントは、すべてのブラウザJSが_window_トップレベルのオブジェクトを持っているわけではなく、たとえばWorkersですが、典型的なのはあなたが正しいことです。 – dandavis
- 1. フラグレジスタの予約/未定義ビットの目的は何ですか?
- 2. TypeError:プロパティ 'apply'が未定義の場合
- 3. ドラッグ・ドロップ・イベントが未定義の場合
- 4. jQuery/Javascriptコードチェックが未定義の場合
- 5. TypeError:qは未定義です(JSの場合)
- 6. Webpack(2) - レイジーロードファイルの場合、 'Promise'は未定義です
- 7. 未定義の名前空間の窓は、携帯電話7
- 8. NoMethodError(nilの場合は未定義メソッド[[] ':NilClass)オブジェクトがnilでない場合
- 9. C++の静的関数ポインタメンバーへの未定義の参照は何ですか?
- 10. 私はエラーが未定義のメソッドを `空ですか?無しの場合:NilClass
- 11. ページを取得する場合は未定義のインデックスページ
- 12. Mongoid:nilの未定義メソッド `name ':存在する場合でもNilClass
- 13. メソッドのデコレータでTypescriptメソッドが未定義の場合
- 14. 未定義のエラー:フラスコ重量を使用している場合、 'wtfは未定義です'
- 15. vector [1] = someIntを使用できる場合、emplace()の目的は何ですか?
- 16. (typeof variable === 'boolean')と(typeof variable == 'boolean')の違いは何ですか?
- 17. sqlalchemyを使用する場合、__table_args__の目的は何ですか?
- 18. クラスのメソッドで使用される場合、クラスのプロパティは未定義です
- 19. このような関数を定義する目的は何ですか?
- 20. 肯定的なルックアラウンドを使用しない場合の目的は何ですか?
- 21. 3進演算子で関数が未定義の場合
- 22. Reads [T]とWrites [T]がある場合、Format [T]の目的は何ですか?
- 23. 木場4の「発見」タブの目的は何ですか?
- 24. 工場の女の子 - 目的は何ですか?
- 25. JRubyの-1.6.5:NoMethodError未定義のメソッド '[]' ゼロの場合:NilClass
- 26. PHPは未定義ですが、var_dumpはそれ以外の場合は
- 27. 未定義とnullの違いは何ですか?
- 28. $が未定義の原因は何ですか? (JQuery)
- 29. 未定義のシンボルとは何ですか:X509_EXTENSION_free?
- 30. JSON要素へのアクセスが未定義の場合
このコードの作成者は、「私はchromeまたはnode.jsで動作していますか?」という質問をしています。この素晴らしいコードはjavascriptが動作する「両方」の場所で動作します。 – dandavis