匿名函数表达式和命名函数表达式的区别(JavaScript)

Different between anonymous function expression and named function expression (JavaScript)?

本文关键字:函数 表达式 JavaScript 区别      更新时间:2023-09-26

我有下面的代码:

//anonymous function expression
var a = function() {
    return 3;
}
//named function expression
var a = function bar() {
    return 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后来绑定到什么,它都会一直调用自己。