2015-09-16 2 views

答えて

7

スクリプトがWebブラウザで実行されているかどうかをテストすることです。 Webページで

、などwindowなど、いくつかの組み込みオブジェクトが存在する、(Node.jsのような)他の環境がwindowを持っていませんが、consoleのような他のオブジェクトを持っているかもしれない(まあ、consoleは現在、今ではほとんどのブラウザでは存在するが、それはもともとではありませんでした)。

+0

正しいですが、文字列 ''undefined''と同じではありませんか?これは '!==' not '!=' – Blindy

+0

@Blindyです。 'type'演算子によって返される' window'オブジェクトの型は '' undefined''という文字列と等しくなります。 –

+0

ああ、それは理にかなっています。それは型であり、オブジェクト自体ではありません – Blindy

6

これは、コードが典型的なブラウザ環境(ブラウザDOMを持つ環境など)で実行されているのか、他のJS環境で実行されているのかを検出するために使用できますnode.jsのようなもの、あるいはブラウザのwebWorkerさえあるもの。

windowオブジェクトが存在しない場合は、

typeof window === 'undefined' 

ので、あなたがについて尋ねコード:windowオブジェクトは、トップレベルの変数として存在しない場合

if (typeof window !== 'undefined') 

ifブロックを実行します。

あなたがリンクしている特定のコードでは、ブラウザ以外の環境でプラグインが使用された場合は、documentのようなDOMオブジェクトを参照するブラウザターゲットコードを実行しないようにします。

+0

@dandavis - 'Workers() 'に関するあなたのコメントはどこから来たのですか?私は「労働者」について何も言わなかった。 – jfriend00

+0

@dandavis - 私はwebWorkerコードがこの質問と何をしているのか理解していません。申し訳ありませんが、私はあなたのコメントを理解していません。このコードはブラウザのような 'window'オブジェクトの存在を検出します。 DOMとそれに関連するオブジェクトが存在する可能性がある(対してnode.jsではない)場合はそれだけではわかりますが、自分の環境について知りたいことをすべて伝えることはできません。環境内のいくつかの他のものは、他のテスト(質問の対象ではない)を必要とするかもしれません。また、参照されている特定のコードでは、DOMを使用できるかどうかを判断するために使用されます。 – jfriend00

+0

少しのポイントは、すべてのブラウザJSが_window_トップレベルのオブジェクトを持っているわけではなく、たとえばWorkersですが、典​​型的なのはあなたが正しいことです。 – dandavis

関連する問題