Modernizrは、次で始まる:なぜウィンドウとドキュメントがパラメータとして渡されましたか?
window.Modernizr = (function(window,document,undefined) { ...
...しかし、ウィンドウおよびドキュメントをパラメータとして渡されている理由は?ブラウザ間の違いとは何か?それとも単純に再定義できないのですか?その関数を呼び出す
Modernizrは、次で始まる:なぜウィンドウとドキュメントがパラメータとして渡されましたか?
window.Modernizr = (function(window,document,undefined) { ...
...しかし、ウィンドウおよびドキュメントをパラメータとして渡されている理由は?ブラウザ間の違いとは何か?それとも単純に再定義できないのですか?その関数を呼び出す
パラメータは、以下の通りである:(this, this.document)
だから、window
がグローバルオブジェクトであることを保証しています 、document
は、ドキュメントオブジェクトであるとundefined
は未定義です。
また、パフォーマンスが少し改善されます。詳細はWhy does jQuery has a "window=this" at the very begining and say it would speed up references to window?を参照してください。
私はそれが効率的だと信じています。 window
とdocument
は、Modernizrがそれを必要とするたびにフェッチする必要はなく、そのキャッシュバージョンです。
これは環境を多かれ少なかれ独立させ、テスト目的で 'window'と' document'をモックすることを可能にします。 –
正確な複製([関数(ウィンドウ、ドキュメント、未定義){...})(ウィンドウ、ドキュメント)を使用する利点は何ですか?](http://stackoverflow.com/questions/5020479/what-advantages-does -using-functionwindow-document-undefined-windo) – Bergi