[解決済み] 即時関数呼び出し構文
2022-09-22 10:16:45
質問
ある JSLint オプションがあり、これは実際に The Good Parts の 1 つです。
(function () {
// ...
})();
のように書く必要があります。
(function () {
// ...
}());
私の質問はこうです -- なぜこの2番目の形式がより良いと考えられるのか、どなたか説明していただけませんか? より弾力性があるのでしょうか? エラーが発生しにくいのでしょうか? 最初の形式に対してどのような利点があるのでしょうか?
この質問をしてから、関数値と関数の値を明確に視覚的に区別することの重要性を理解するようになりました。 即時呼び出しの結果が代入式の右辺である場合を考えてみましょう。
var someVar = (function () {
// ...
}());
一番外側の括弧は構文的には不要ですが、冒頭の括弧は、代入される値が ではなく 関数そのものではなく、呼び出された関数の結果であることを前もって示します。
これは、コンストラクタ関数の大文字表記に関するCrockfordのアドバイスに似ています -- ソースコードを見ている人に視覚的な手がかりを与えることを目的としています。
どのように解決するのですか?
ダグラス・クロックフォード(Douglass Crockford)の スタイル・コンベンション・ガイド : ("invoked immediately"で検索してください)
関数が直ちに呼び出される場合、生成される値が関数そのものではなく、関数の結果であることを明確にするために、呼び出し式全体を括弧で囲む必要があります。
つまり、基本的には、関数の値と関数の値の間の区別をより明確にするものだと考えています。つまり、これはスタイル上の問題であり、コード自体の本質的な違いではありません。
更新された参照、古い PPT はもう存在しない
関連
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] JSLintが突然レポートする。"use strict" の関数形式を使用する
-
[解決済み] JavaScriptの(function() { } )()構文とは何ですか?
-
[解決済み] 非同期アロー関数のシンタックス
-
[解決済み] Javascriptのファイル全体を「(function(){ ... })()」のような無名関数で囲むのは何のためでしょうか?
-
[解決済み] カプセル化された匿名関数の構文について説明します。
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】JavaScriptの関数式の前にプラス記号がある場合
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法