之间有什么区别
var a = function() {}
和
var a = function b() {}
后者,b未定义?
答案 0 :(得分:4)
第二个是named anonymous function - 名称将出现在堆栈跟踪中(否则在堆栈跟踪中你会看到“匿名函数”)
答案 1 :(得分: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
答案 2 :(得分:1)
var a = function() {}
可以省略函数名称。在这种情况下,省略函数名称。这些函数称为匿名函数。
详细了解javascript范围和匿名函数的优缺点。