所以我很困惑什么时候会使用匿名函数,比如:
let foo = function () {
//code
}而不是命名匿名函数,例如:
let foo = function foo () {
//code
}除了浏览器支持,也就是IE,两者之间有什么区别吗?什么时候我应该使用一个而不是另一个?
发布于 2018-01-30 14:50:22
在这种情况下,如果函数声明名与它所赋值的变量相同,则没有太大区别。
如果定义和赋值使用了不同的名称,则函数的命名优先于右侧的名称:
foo = function bar() {}
foo.name // "bar"在这两种情况下,您都将函数分配给一个变量(函数表达式),但在第一种情况下,您将分配一个未命名/匿名函数,而在第二种情况下,您将分配一个命名函数。当在这样一个简单的表达式中将匿名函数赋值给变量时,JS引擎能够正确地命名该函数。
考虑以下情况,其中此赋值对于引擎不明显:
function p(fun) { return fun; }
foo = p(function() {})
foo.name // empty string使用命名函数,您通常可以获得更好的堆栈跟踪。
https://stackoverflow.com/questions/48515483
复制相似问题