この記事の例では、JavaScript 匿名関数の使用法について説明します。皆さんの参考に共有してください。詳細は以下の通りです。
1. 関数を定義します
JavaScript では、
などの「関数宣言」と「関数式」を通じて関数を定義できます。1.「関数宣言」で関数を定義する
function t1(){}
2.「関数式」で関数を定義する
t2 = function(){}
しかし、2 つの方法で関数を定義した場合の効果は異なります
t1 は関数宣言であり、「字句解析」中、AO.t1 = function(){}、-------------「字句解析」段階で役割を果たします
t2 は、「実行」中、AO.t2 = function(){} の代入操作です。値は右側の式によって返される結果です。-----これは「実行」時にのみ有効です。ステージ
2. 匿名関数
JavaScript では、括弧 () 内のステートメントは式として実行されます。前述したように、「関数式」を使用して関数を定義できます。次に、
などの関数を () 内に定義できます。
(function t3(){alert(' i am t3');})
関数が名前を使用しない場合は、次のように変更します
(function(){alert(' i am t3');})
()内に含まれるステートメントは式なので戻り値を持ちます。(function(){alert(' i am t3');})の戻り値は定義された関数であり、すぐに呼び出すことができます。 、
など
(function(){alert(' i am t3');})()
そこで、()内に名前のない関数を定義します。これを無名関数と呼びます。このように、匿名関数はグローバルな状況を汚すことなく即座に実行されます。これを関数式の即時実行と呼びます。
3. jquery は匿名関数です
jquery のコードは匿名関数にカプセル化されています。これは jquery の最も外側のコードです。
(function(window,undefined){})(window);//立即调用
しかし、jquery はウィンドウを渡すのに、未定義は渡さないのはなぜでしょうか?
回答: ウィンドウを渡す目的は、検索を高速化し、変数のクエリ時間を短縮することです。たとえば、次の js コード
function(){ function(){ function(){ function(){ document.getElementById(); //这个document将会沿作用域层层上找,直到最外层window全局。 } } } }
ローカル変数の内部検索を高速化するために、jquery はウィンドウをパラメータとして直接渡し、ウィンドウが jquery の内部 AO 上にあるようにします。
未定義を渡さない理由は安全のためです。IE と FF の以前のバージョンでは、未定義が再割り当てされる可能性があるためです (例: unknown=3)。
ローカル変数を未定義(名前は未定義)として宣言し、同時にパラメータを渡さなくても値は当然未定義になりますこの記事が皆様の JavaScript プログラミング設計に役立つことを願っています。