私はそれほど冗長グローバルスコープを参照するには、自己またはウィンドウを使用する必要がありますか?
example = "Hello";
alert(example);
に
window.example = "Hello";
window.alert(window.example);
を好む、グローバルスコープの変数にアクセスしてるときに、明示的になりたいスタイルの慣例として、私が今使用できるモジュールを持っていますブラウザから直接、または利用可能な場合はウェブワーカーからアクセスできます。 Webワーカーではグローバルオブジェクトはself
と呼ばれ、ブラウザではwindow
と呼ばれます。 (:var self = this彼らはしばしばそうであるように)誰がself
を再宣言しないよう
window
オブジェクトは、自己性質を持っているので、self.example = "Hello"
限り、両方のコンテキストで動作します。
どのようなコンベンションに最適ですか?
- 使用
self
と誰が競合self
を宣言していません願っています。 window
が定義されている場合はwindow
を使用し、そうでない場合はself
を使用してください。- 他に何かありますか?
これについて考えてみると、私は第2のものと一緒に行く傾向があります。
驚いたことに、これはWebワーカーで使用されると参照エラーが発生するようです。 Chromeは「ReferenceError:変数を見つけることができません:ウィンドウ」と言っています。私はrequireJSを使ってこのモジュールをワーカーからロードすることを言及する必要があります。だから私はそれがいくつかの不思議さの原因かもしれないと思います。 – RichardTowers
申し訳ありませんが、私は存在しない変数の厳しい扱いを忘れていました。それを固定した。 – matt3141
'global = typeof window!==" undefined "&& window!== null?ウィンドウ:自己;も間違いなく動作するようです。私は@ Pointyの答えが好きです。 – RichardTowers