為什么給函數表達式添加函數名


看一些框架的源碼(非壓縮)的時候,偶爾會看到他們會給函數表達式添加函數名。
比如以下代碼:

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

// 不給函數表達式看起來更簡潔
setTimeout(function () {
  console.log('foo');
}, 1000);

事實上,給函數表達式添加函數名是一種最佳實踐,有下面幾點理由:

1、如果代碼出錯,有函數名可以快速定位錯誤位置,否則匿名函數在棧追蹤中不會顯示出有意義的函數名,調試困難。

2、沒有函數名,函數想引用自身需要依靠已經廢棄的arguments.callee。有一個經典的例子是,使用removeEventListener()需要解綁事件函數,也就是自身。

3、函數名能提高代碼的可讀性\可理解性,一堆匿名函數會讓代碼變得混亂。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com