2

違いは何ですか

var a = function() {}

var a = function b() {}

後者の b は未定義ですか?

4

3 に答える 3

4

1 つ目は無名関数式で、2 つ目は名前付き関数式で、どちらも Javascript で有効です。

たとえば、arguments.calleeどこにいても自分自身を参照するため、(非推奨で厳密モードでは許可されていません) なしで再帰に使用できます。参照のスコープは、関数内でのみローカルです。つまり、グローバルにはアクセスできません。

var a = function b(){
    return b;
 };
function c() {
    return c;
}
var d = function e() {
    return e();
};
d(); // maximum call stack size exceeded :P
var f = c;
c = null;
f(); // null
a(); // function
b();// undefined not a function
b; // not defined
a()(); // same function again
于 2013-10-03T08:54:14.707 に答える
4

2 つ目は名前付き無名関数です。名前はスタック トレースに表示されます (それ以外の場合、スタック トレースには「無名関数」と表示されます)。

于 2013-10-03T08:52:58.543 に答える
1
var a = function() {}

関数名は省略可能です。この場合、関数名は省略されます。これらの関数は無名関数と呼ばれます。

詳細については、JavaScript スコープと無名関数の長所と短所を参照してください。

于 2013-10-03T09:04:15.250 に答える