6

私は最近、 https://github.com/yeoman/generator-webappのソースでこのパターンに出くわしました:

AppGenerator.prototype.packageJSON = function packageJSON() {
  this.template('_package.json', 'package.json');
};

とにかく関数を変数またはオブジェクトのプロパティに割り当てるときに、関数に「packageJSON」という名前を付ける目的は何ですか? 同様のケースで、私は常に匿名関数を使用してきました。

4

3 に答える 3

6

デバッグ用。名前付き関数を使用すると、お気に入りの開発ツールのコール スタック トレースでその名前を確認できます。それ以外の場合は、 が表示されますanonymous function

于 2013-04-12T20:51:57.410 に答える
0

これは名前付き関数式(または NFE) と呼ばれ、デバッグ プロセスがはるかに簡単になります。

覚えておくべき重要な詳細は、この名前は新しく定義された関数のスコープでのみ使用できるということです。仕様では、識別子を囲んでいるスコープで使用できないようにする必要があります。

var f = function foo(){
  return typeof foo; // "foo" is available in this inner scope
};
// `foo` is never visible "outside"
typeof foo; // "undefined"
f(); // "function"
于 2013-04-12T20:55:46.163 に答える