0

私はウィキペディアの例に従っています:

var counter = (function(){
  var i = 0;

  return {
    get: function(){
      return i;
    },
    set: function( val ){
      i = val;
    },
    increment: function() {
      return ++i;
    }
  };
}());

内部に変数を含むスタック フレームを保持するクロージャーがあり、複数のカウンターを作成できることを理解しています。これはi明らかです。しかし、なぜ IIFE 構文がここで使用されるのでしょうか? それなしでコードを書き直すと、同じように機能します。

var counter2 = function(){
  var i = 0;

  return {
    get: function(){
      return i;
    },
    set: function( val ){
      i = val;
    },
    increment: function() {
      return ++i;
    }
  };
};

c2 = counter2();

ウィキペディアの例でIIFEが何をしているのかについての説明をいただければ幸いです。

4

2 に答える 2

2

違いは、実際に関数を定義することです。バリアントでは、counter2 はオブジェクト c2 のプロトタイプとしてメモリ内に残ります。

Iffys は、後で再利用するためのプロトタイプではなく、特定のタイプの単一のオブジェクトのみを作成する場合に使用されます。

于 2013-06-24T17:34:46.733 に答える
1

関数をすぐに呼び出すと、匿名になります。利点は、後で必要としない関数名で名前空間を乱雑にしないことです。

他に違いはありません。細部のように見えるかもしれませんが、再利用しないのに、なぜこの関数に名前を付けるのでしょうか?

于 2013-06-24T17:27:46.327 に答える