1

これらの違いは何ですか?

var myFunc = function() {
  // ...
};

対。

var myFunc = function myFunc() {
  // ...
};

2 番目の例ではarguments.callee.caller.name機能しますが、最初の例では機能しません。2番目の構文に何か問題がありますか?

4

3 に答える 3

2

関数リテラルのnamein はオプションです。最初のケースのように省略された場合、関数はanonymousと言われます。

これはDouglas Crockford によるJavaScript: The Good Partsからのものです。

関数リテラルには 4 つの部分があります。最初の部分は予約語functionです。オプションの 2 番目の部分は、関数の名前です。この関数は、その名前を使用して自分自身を再帰的に呼び出すことができます。この名前は、関数を識別するためにデバッガーや開発ツールで使用することもできます。前の例のように、関数に名前が付けられていない場合、それはanonymousであると言われます。

于 2013-07-01T03:30:35.493 に答える
1

最初の関数には名前がありません。

関数を変数に割り当てても、関数に名前は付けられません。

于 2013-07-01T03:04:32.903 に答える