和有什么区别
var a = function() {}
和
var a = function b() {}
后者,b 是未定义的?
第一个是匿名函数表达式,第二个是命名函数表达式,两者都在 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
第二个是命名匿名函数- 该名称将出现在堆栈跟踪中(否则在堆栈跟踪中您将看到“匿名函数”)
var a = function() {}
函数名可以省略。在这种情况下,函数名称被省略。这些函数称为匿名函数。
阅读有关 javascript 范围和匿名函数的优点和缺点的详细信息。