Javascript的区别是将函数存储到带有函数名的变量还是没有函数名?

时间:2014-09-08 03:34:47

标签: javascript

这两个功能有什么区别;

 var a = function () { console.log("hi");  }  
 var b = function xyz() { console.log("hi");  }  

当我调用这两个函数时,两者都给出相同的结果。那么在声明函数名称' xyz' ?

1 个答案:

答案 0 :(得分:0)

第二种形式称为“命名函数表达式”。与普通函数表达式相比,它具有以下几个优点:

  • 它使调试变得容易一些 - 当你有一堆像这样的函数,并且你得到一个错误时,命名你的函数使得解释生成的堆栈跟踪更容易。
  • 您可以递归调用命名函数 - 例如,执行:

    f = function f() {
        f();
    };
    
    f();
    

    ...作品。

您可以找到更详细的信息here

使用命名函数表达式也有一些缺点。 例如,执行f = function g() { ... }实际上会创建两个实体 - 函数fg,这可能会造成混淆。 (参见评论)如果你不小心,还有一些复杂的范围,可能会导致错误。您可以找到更详细的信息here