所以我很困惑何时会使用匿名函数,例如:
let foo = function () {
//code
}
与命名的匿名函数相比,例如:
let foo = function foo () {
//code
}
除了浏览器支持,即IE,两者之间有什么区别吗?我何时应该使用另一个?
答案 0 :(得分:2)
在这种情况下,函数声明名称与赋值的变量相同,它没有太大的区别。
如果您为定义和赋值使用了不同的名称,则右侧的名称优先于命名函数:
foo = function bar() {}
foo.name // "bar"
在这两种情况下,您都将函数分配给变量(函数表达式),但在第一种情况下,您指定了一个未命名/匿名函数,而在第二种情况下,您指定了一个命名函数。在这样一个简单的表达式中为一个变量赋予一个匿名函数时,JS引擎能够正确地命名该函数。
考虑以下情况:此分配对于引擎来说不明显:
function p(fun) { return fun; }
foo = p(function() {})
foo.name // empty string
TL; DR;使用命名函数,您通常可以获得更好的堆栈跟踪。