为什么给函数表达式添加函数名

看一些框架的源码(非压缩)的时候,偶尔会看到他们会给函数表达式添加函数名。
比如以下代码:

// 添加函数名
setTimeout(function foo() {
  console.log('foo');
}, 1000);

// 不给函数表达式看起来更简洁
setTimeout(function () {
  console.log('foo');
}, 1000);

事实上,给函数表达式添加函数名是一种最佳实践,有下面几点理由:

1、如果代码出错,有函数名可以快速定位错误位置,否则匿名函数在栈追踪中不会显示出有意义的函数名,调试困难。

2、没有函数名,函数想引用自身需要依靠已经废弃的arguments.callee。有一个经典的例子是,使用removeEventListener()需要解绑事件函数,也就是自身。

3、函数名能提高代码的可读性\可理解性,一堆匿名函数会让代码变得混乱。

猜你喜欢

转载自www.cnblogs.com/wljqds/p/11280135.html
今日推荐