これらの違いは何ですか?
var myFunc = function() {
// ...
};
対。
var myFunc = function myFunc() {
// ...
};
2 番目の例ではarguments.callee.caller.name
機能しますが、最初の例では機能しません。2番目の構文に何か問題がありますか?
これらの違いは何ですか?
var myFunc = function() {
// ...
};
対。
var myFunc = function myFunc() {
// ...
};
2 番目の例ではarguments.callee.caller.name
機能しますが、最初の例では機能しません。2番目の構文に何か問題がありますか?
関数リテラルのname
in はオプションです。最初のケースのように省略された場合、関数はanonymousと言われます。
これはDouglas Crockford によるJavaScript: The Good Partsからのものです。
関数リテラルには 4 つの部分があります。最初の部分は予約語functionです。オプションの 2 番目の部分は、関数の名前です。この関数は、その名前を使用して自分自身を再帰的に呼び出すことができます。この名前は、関数を識別するためにデバッガーや開発ツールで使用することもできます。前の例のように、関数に名前が付けられていない場合、それはanonymousであると言われます。
最初の関数には名前がありません。
関数を変数に割り当てても、関数に名前は付けられません。