var varName = function funcName(){}

时间:2013-10-03 08:51:38

标签: javascript function

之间有什么区别
var a = function() {}

var a = function b() {}

后者,b未定义?

3 个答案:

答案 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范围和匿名函数的优缺点。