ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の匿名関数について説明する

JavaScript の匿名関数について説明する

青灯夜游
青灯夜游転載
2018-10-12 15:56:465314ブラウズ

この記事では、JavaScript の匿名関数について説明します。必要な方は参考にしていただければ幸いです。

分析:

1. いわゆる匿名関数は、文字通り理解すると、名前のない関数です。JS では代わりに () を使用します (注、これは、英語状態

2. 定義形式:

function (){
    //to add codes that you want to add
}

3. 無名関数の機能

(1) クロージャ関数と比較して、その最大の機能は次のとおりです。グローバル オブジェクトを汚染します。実行が完了すると、GC は自動的にメモリを再利用します。これがクロージャ関数との本質的な違いです。クロージャ関数の主な特徴は、

変数がメモリ内に常駐し、ブラウザが閉じられたときにのみ解放されることです。

function f1(){
    var n=999;
    nAdd=function(){n+=1}
    function f2(){
      alert(n);
    }
    return f2;
  }
  var result=f1();
  result(); // 999
  nAdd();
  result(); // 1000

上記のコードでは、result は実際にはクロージャ f2 関数です。これは 2 回実行され、1 回目の値は 999、2 回目の値は 1000 でした。これは、関数 f1 のローカル変数 n が常にメモリに格納され、f1 が呼び出された後に自動的にクリアされないことを証明します。

なぜそうなるのでしょうか?その理由は、f1 が f2 の親関数であり、f2 がグローバル変数に割り当てられているため、f2 は常にメモリ内に存在し、f2 の存在は f1 に依存するため、f1 は常にメモリ内にあり、削除されないためです。呼び出しが完了すると、ガベージ コレクション メカニズム (ガベージ コレクション) によってリサイクルされます。

このコードでもう 1 つ注目すべき点は、「nAdd=function(){n =1}」という行です。まず、var キーワードが nAdd の前に使用されていないため、nAdd はグローバル変数です。ローカル変数よりも。次に、nAdd の値は匿名関数であり、この

匿名関数自体もクロージャであるため、nAdd は関数の外部で関数内のローカル変数を操作できるセッターと同等です。

(2) 一般関数と異なり、プリコンパイルは行われません。

function fuc() {
    fuc1(); //foo被提到了作用域的最前面, 于是这里可以正常调用foo函数
    fuc2(); //这里会报错bar是个undefined
    function fuc1() {alert("foo()") }
    var fuc2 = function () { alert("bar")};
}

コード:

無名関数のいくつかの式:

モード 1: 関数リテラル(関数リテラル)

最初に関数オブジェクトを宣言し、次に実行します。 。

(function(){ 
// insert code here 
})();

モード 2: 優先順位式 (Prior Expression)

JavaScript は式を内側から外側に向かって順番に実行するため、宣言された関数を強制的に実行するために括弧が使用されます。

(function(){ 
// insert code here 
}());

モード 3: Void 演算子 (Void 演算子)

Void 演算子を使用して、単一のオペランドを実行します。

void function(){ 
// insert code here 
}();

要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。関連チュートリアルの詳細については、JavaScript ビデオ チュートリアルをご覧ください。

関連する推奨事項:

JavaScript グラフィック チュートリアル

JavaScript オンライン マニュアル

以上がJavaScript の匿名関数について説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。