[解決済み] JavaScriptの(function() { } )()構文とは何ですか?
2022-03-19 08:12:50
質問
以前はこの意味が分かっていたのですが、今は悩んでいます...。
これは基本的に
document.onload
?
(function () {
})();
解決方法は?
それは 即座に呼び出される関数式 または IIFE を省略したものです。作成後すぐに実行されます。
のような)イベントのイベントハンドラとは何の関係もない。
document.onload
).
最初の括弧の中の部分を考えてみましょう。
(function(){})();
...これは正規の関数表現です。次に、最後のペアを見ます。
(function(){})();
これは、通常、関数を呼び出すための式に追加されます。
このパターンは、グローバル名前空間の汚染を避けようとする場合によく使われます。なぜなら、IIFEの内部で使用されるすべての変数(他のすべての
通常の
関数)は、そのスコープの外からは見えません。
のイベントハンドラと混同しているのは、このためかもしれません。
window.onload
このように使われることが多いからです。
(function(){
// all your code here
var foo = function() {};
window.onload = foo;
// ...
})();
// foo is unreachable here (it’s undefined)
修正提案 グーファ :
関数は、パースされた後ではなく、作成された直後に実行されます。スクリプトブロック全体は、その中のコードが実行される前にパースされます。また、コードがパースされたからといって自動的に実行されるわけではありません。例えばIIFEが関数の中にある場合、その関数が呼び出されるまで実行されることはありません。
更新 これはかなりポピュラーなトピックなので、IIFEの書き方として ES6のarrow関数 (例えば ガジューム ご指摘の通り コメントで ) :
((foo) => {
// do something with foo here foo
})('foo value')
関連
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
jq は html ページとデータを動的に分割する。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
jQueryのコピーオブジェクトの説明
-
vueにおけるv-forループオブジェクトのプロパティ
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】Node.js Error: Cannot find module express
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
jq は html ページとデータを動的に分割する。
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複