私が考えることができる3つの主な理由:
- 親スコープアクセス
- プライバシー
- より高いスコープで定義された名前の削減
親スコープアクセス:インライン関数定義により、インラインコードは親スコープで定義された変数にアクセスできます。これは多くのことに非常に役立ち、適切に行うとコードの量や複雑さを軽減できます。
このスコープ外で定義された関数にコードを配置してからコードを呼び出す場合、関数にアクセスしたい親状態を渡す必要があります。
プライバシー:インライン匿名定義内のコードはよりプライベートであり、他のコードから呼び出すことはできません。
上位のスコープで定義された名前の削減: これは、グローバルスコープで操作する場合に最も重要ですが、インライン匿名宣言により、現在のスコープで新しいシンボルを定義する必要がなくなります。Javascriptはネイティブで名前空間の使用を必要としないため、最低限必要なものよりも多くのグローバルシンボルを定義しないようにするのが賢明です。
社説:匿名でインラインで宣言することは、親スコープアクセスが使用されていない場合でも、関数を定義して呼び出すよりも「良い」と見なされるJavascriptの文化的なものになったようです。これは、最初はJavascriptのグローバルな名前空間の汚染の問題によるものであり、おそらくプライバシーの問題によるものと思われます。しかし、今やそれはやや文化的なものに変わっており、多くの公共のコード体系(あなたが言及したようなもの)で表現されていることがわかります。
C ++のような言語では、多くの場合、多くのページ/画面にまたがる1つの巨大な機能を持つことは理想的ではないと考えられます。もちろん、C ++にはネームスペースが組み込まれており、親スコープへのアクセスを提供せず、プライバシー機能を備えているため、Javascriptはコード式を使用してプライバシーと親スコープへのアクセスを達成する必要がありますが、完全に読みやすさ/保守性を高めることができます。そのため、JSは別の方向に動機付けられているように見え、特定の場合にその方向に動機付けられたものが必要でない場合でも、言語内の文化的なものになります。