2

和有什么区别

var a = function() {}

var a = function b() {}

后者,b 是未定义的?

4

3 回答 3

4

第一个是匿名函数表达式,第二个是命名函数表达式,两者都在 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

第二个是命名匿名函数- 该名称将出现在堆栈跟踪中(否则在堆栈跟踪中您将看到“匿名函数”)

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

函数名可以省略。在这种情况下,函数名称被省略。这些函数称为匿名函数。

阅读有关 javascript 范围和匿名函数的优点和缺点的详细信息。

于 2013-10-03T09:04:15.250 回答