問題タブ [iife]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 即時関数呼び出しの構文
実際、良い部分の 1 つであるJSLintオプションがあります。これは、"[requires] 即時呼び出しの周りに括弧が必要です"。
代わりに次のように書く必要があります
私の質問はこれです -- この 2 番目の形式の方が優れていると考えられる理由を説明できる人はいますか? それはより弾力性がありますか?エラーが起こりにくい?最初のフォームよりもどのような利点がありますか?
この質問をして以来、関数の値と関数の値を視覚的に明確に区別することの重要性を理解するようになりました。即時呼び出しの結果が代入式の右辺である場合を考えてみましょう。
最も外側の括弧は構文上不要ですが、左括弧は、割り当てられる値が関数自体ではなく、呼び出された関数の結果であることを前もって示します。
これは、コンストラクター関数の大文字化に関する Crockford のアドバイスに似ています。これは、ソース コードを見ている人に視覚的な手がかりとして役立つことを意図しています。
javascript - 同じ行で無名関数を呼び出す必要があるのはなぜですか?
私はクロージャに関するいくつかの投稿を読んでいて、これをどこでも見ましたが、それがどのように機能するかについての明確な説明はありません-私がちょうどそれを使用するように言われたたびに...:
OK、新しい無名関数を作成して実行することがわかりました。したがって、その後、この単純なコードは機能するはずです(そして機能します):
私の質問は、ここでどのような魔法が起こるのかということです。私が書いたとき、私は思った:
次に、関数 ""(msg)..のように名前のない新しい関数が作成されます。
しかし、なぜこれが機能しないのですか?
なぜ同じ行にある必要があるのですか?
いくつかの投稿を教えていただけますか、それとも説明をお願いします。
javascript - 「(function(){…})()」のような無名関数でJavascriptファイル全体をラップする目的は何ですか?
最近、たくさんのJavascriptを読んでいて、インポートする.jsファイルでファイル全体が次のようにラップされていることに気づきました。
単純なコンストラクター関数のセットではなく、これを行う理由は何ですか?
javascript - 匿名 JavaScript 関数を自動実行するための括弧の場所は?
最近、現在のバージョンのjson2.jsと自分のプロジェクトのバージョンを比較していたところ、関数式の作成方法と自己実行方法に違いがあることに気付きました。
無名関数を括弧で囲んで実行するコードは、
ただし、自動実行された関数を括弧で囲みます。
Explain JavaScript のカプセル化された匿名関数構文の受け入れられた回答に、CMS によるコメントがあります。 「両方とも(function(){})();
有効(function(){}());
です。」</p>
何が違うの?と思いました。前者は、グローバルな無名関数を残すことでメモリを占有しますか? 括弧はどこに配置する必要がありますか?
javascript - このプラクティスはJavaScriptで何と呼ばれていますか?
JavaScriptコードを次のような関数でラップすると、次のようになります。
これにより、多くのWebページでのスコープの問題が修正されることに気付きました。この慣習は何と呼ばれていますか?
javascript - この未知の JavaScript 構文は何ですか?
これはjQueryコードですか
に相当
はいの場合、2 つの違いは何ですか? そうでない場合、最初は何をしますか?
編集:
みんなありがとう。ほとんどの反応は、さまざまなフレーバーとサンプルで類似しています
javascript - JavaScriptの自己呼び出し関数
この例は、StoyanStefanovによるObjectOrientedJavaScriptという本の79ページから入手しました。どうすればよいかわからないので、このプログラムを初めて実行したとき(Enterキーを押して)、「undefined」が返されました。その後、作者の指示に従って、私はそれを呼び出しa();
、アラート「Workyworky」を受け取りました
私の質問は
a)最初のステップを正しく実行しましたか?つまり、「Enter / Return」を押すだけで自己呼び出しプログラムを実行することになっていますか?
b)プログラムを実行するために「Enter / Return」を押すだけで正しかったのに、なぜ「undefined」の結果が得られたのですか。このプログラムは、(最初の実行時に)関数actualWork()への参照をリファントすると著者は言います。参照を返す場合、なぜそれが未定義と見なされるのですか?どういうわけか重要ですか?
jsfiddle.netにコードを入力して実行を押しても何も起こらなかったが、コンソールで最初に実行したときに「未定義」になり、その後a()を実行したときにアラートが発生したことに注意してください。
javascript - JavaScriptでの変数シャドウイングの正しい用語は何ですか?
以下に、(他の関数と同様に)ローカルスコープを作成するIIFEがあります。そのスコープ内にparseInt
関数があります。これで、ブラウザにはその名前のグローバル関数がすでに存在するため、ローカル関数はグローバルparseInt
関数を覆い隠します。IIFE内では、parseInt
を呼び出すと、グローバル関数ではなくローカル関数が呼び出されます。(グローバル関数は引き続き。で参照できますwindow.parseInt
。)
これには、デジュリ(ECMAScript仕様)またはデファクト(共通)の名前がありますか?影を落とす?オーバーロード?
javascript - Javascript自己実行関数は「関数ではありません」
私は持っています:
そして、ページがロードされると、私のjsは正しく実行されます。私も持っています:
しかし、firebugは、Initは関数ではないと言います。