匿名函数表达式和命名函数表达式(JavaScript)之间有什么不同?

时间:2015-09-09 07:49:57

标签: javascript

我有以下代码:

//anonymous function expression
var a = function() {
    return 3;
}

//named function expression
var a = function bar() {
    return 3;
}

那么,他们之间有什么不同? (技术,用途)

1 个答案:

答案 0 :(得分:3)

主要区别是

  • 您可以检查函数名称(例如堆栈跟踪更易读)
  • 该功能可以递归

请注意像

这样的功能
var fibo = function(n) {
    return n<2 ? 1 : fibo(n-1) + fibo(n-2);
};

实际上并不是递归的,因为它的主体会在调用时调用fibo绑定的任何内容(因此如果稍后将fibo分配给其他内容,它将不会调用自身)。版本

var f = function fibo(n) {
    return n<2 ? 1 : fibo(n-1) + fibo(n-2);
};

实际上是递归的,无论后来f被绑定到什么地方,都会继续调用自己。