タグ付けされた質問 「iife」



8
「(function(){…})()」のような匿名関数でJavascriptファイル全体をラップする目的は何ですか?
私は最近多くのJavascriptを読んでいて、インポートされる.jsファイルでファイル全体が次のようにラップされていることに気づきました。 (function() { ... code ... })(); コンストラクター関数の単純なセットではなく、これを行う理由は何ですか?


19
なぜ同じ行で無名関数を呼び出す必要があるのですか?
私は閉鎖についてのいくつかの投稿を読んでいて、これをどこでも見ましたが、それがどのように機能するのか明確な説明はありません-私はちょうどそれを使用するように言われたたびに...: // Create a new anonymous function, to use as a wrapper (function(){ // The variable that would, normally, be global var msg = "Thanks for visiting!"; // Binding a new function to a global object window.onunload = function(){ // Which uses the 'hidden' variable alert( msg ); }; // …

3
即時関数呼び出し構文
JSLintオプションがあります。実際には、グッドパーツの1つです。「即時呼び出しの前後に括弧が必要です」。つまり、 (function () { // ... })(); 代わりに次のように書く必要があります (function () { // ... }()); 私の質問はこれです-なぜこの2番目のフォームがより良いと考えられるのか、誰かが説明できますか?より弾力性がありますか?エラーが発生しにくいですか?最初のフォームと比べてどのような利点がありますか? この質問をして以来、関数の値と関数の値を明確に視覚的に区別することの重要性を理解するようになりました。即時呼び出しの結果が代入式の右辺である場合を考えます。 var someVar = (function () { // ... }()); 最も外側の括弧は、構文的に不要であるが、左括弧が割り当てられている値であるアップフロント指示与えない機能自体ではなく、呼び出される関数の結果を。 これは、コンストラクター関数の大文字化に関するCrockfordのアドバイスに似ています。これは、ソースコードを見ている人に対する視覚的な手掛かりとして機能することを目的としています。

4
匿名のJavaScript関数を自動実行するための括弧の場所は?
最近、json2.jsの現在のバージョンとプロジェクト内のバージョンを比較していたところ、関数式の作成方法と自己実行方法に違いがありました。 匿名関数を括弧で囲んで実行するためのコード、 (function () { // code here })(); しかし現在は、自動実行される関数を括弧で囲んでいます。 (function () { // code here }()); Explain JavaScriptのカプセル化された匿名関数構文の受け入れられた回答にCMSによるコメントがあり、「両方:(function(){})();かつ(function(){}());有効です」。 違いは何だろうと思っていましたか?前者はグローバルな匿名関数を残してメモリを消費しますか?括弧はどこに置くべきですか?

6
このJavaScriptパターンは何と呼ばれ、なぜ使用されているのですか?
私は勉強してTHREE.jsをし、関数がそうのように定義されたパターンに気づきました: var foo = ( function () { var bar = new Bar(); return function ( ) { //actual logic using bar from above. //return result; }; }()); (例はレイキャスト法を参照してくださいここに)。 このようなメソッドの通常のバリエーションは次のようになります。 var foo = function () { var bar = new Bar(); //actual logic. //return result; }; 最初のバージョンを通常のバリエーションと比較すると、最初のバージョンは次の点で異なっているようです。 自己実行関数の結果を割り当てます。 この関数内でローカル変数を定義します。 ローカル変数を使用するロジックを含む実際の関数を返します。 …

2
ES6モジュールのインポートを介してレガシーJSモジュール(例:IIFE)をロードして使用する
私が持っている生命維持の IE10 +(ノーES6モジュールのロードなど)のために働く必要があるとレガシー・アプリケーションのライブラリのコードの一部についての機能を。 しかし、私はES6とTypeScriptを使用するReactアプリの開発を開始しており、ファイルを複製せずに既存のコードを再利用したいと考えています。少し調べた結果、UMDパターンを使用して、これらのライブラリファイルを<script src=*>インポートとして機能させ、ReactアプリがES6モジュールの読み込みを介してインポートできるようにしたいと思いました。 私は次の変換を思いつきました: var Utils = (function(){ var self = { MyFunction: function(){ console.log("MyFunction"); } }; return self; })(); に (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global.Utils …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.