答えは「はい」です。あなたのコードは、あなたのコードがg
またはe
を使用していないため、それらを使用する方法はありません。
あなたのコードはこれらの変数をグローバルにし、グローバルは避けるべきです。これを行うには、変数を囲むラッパースコープを作成する即時呼び出し関数式(IIFE)でコードをラップします。しかし、インダイレクションのレイヤーが存在するため、上位スコープの要素への参照は、スコープチェーンを上に進んで定義を見つけることで解決する必要があります。
グローバル(またはより高いスコープの)オブジェクトへの参照を小さいスコープに渡す場合は、スコープチェーンを上回らないようにスコープの高いオブジェクトへのローカル参照があるため、パフォーマンスをわずかに向上させることができます。あなたはこれをしなかったのであれば、:
(function(w, d){
// Within this function w and d are local references to global objects
w.addEventListener('resize', function() {
...
d.querySelectorAll(...);
...
});
}(window, document));
そして、これらの宣言(ここでは、実際の引数)を持つことは理にかなって。
また、あなたがオブジェクト参照を「解決」する必要があり、いつでも、あなたがそれらを解決するための以下の手順は、パフォーマンス良く、しばらくので:両方があるので、
var w = window;
var d = document;
は特に有用ではありません常にグローバルで利用できる、これら
var g = document.body;
var e = document.documentElement;
あなたはbody
とdocumentElement
プロパティに格納されているオブジェクトを検索する必要がないので便利であり、あなたはbody
とを解決するには、「ヒット」撮影しましたDOMオブジェクトは一度だけですが、後でそれらを何度も何度も解決することなく直接アクセスできます。
細分化...いいえいいえreaon – adeneo
yesオブジェクトを50x反復しなければならない場合は、 – PRMoureu
が可読性を低下させます。また、ローカル変数として 'var d'をどこかに持っていれば、バグの影響を受けやすくなります。 – frozen