美文网首页
你不知道的JavaScript笔记

你不知道的JavaScript笔记

作者: _____西班木有蛀牙 | 来源:发表于2021-08-19 17:37 被阅读0次

3.3.1 匿名和具名
对于函数表达式你最熟悉的场景可能就是回调参数了,比如:

setTimeout( function() {
 console.log("I waited 1 second!");
}, 1000 );

这叫作匿名函数表达式,因为function()..没有名称标识符。函数表达式可以是匿名的,
而函数声明则不可以省略函数名——在JavaScript的语法中这是非法的。

匿名函数表达式书写起来简单快捷,很多库和工具也倾向鼓励使用这种风格的代码。但是
它也有几个缺点需要考虑。

  1. 匿名函数在栈追踪中不会显示出有意义的函数名,使得调试很困难。28 | 第 3 章
  2. 如果没有函数名,当函数需要引用自身时只能使用已经过期的arguments.callee引用,
    比如在递归中。另一个函数需要引用自身的例子,是在事件触发后事件监听器需要解绑
    自身。
  3. 匿名函数省略了对于代码可读性 / 可理解性很重要的函数名。一个描述性的名称可以让
    代码不言自明。
    行内函数表达式非常强大且有用——匿名和具名之间的区别并不会对这点有任何影响。给函
    数表达式指定一个函数名可以有效解决以上问题。始终给函数表达式命名是一个最佳实践:
setTimeout( function timeoutHandler() { // <-- 快看,我有名字了!
 console.log( "I waited 1 second!" );
}, 1000 );
具名函数 匿名函数

相关文章

网友评论

      本文标题:你不知道的JavaScript笔记

      本文链接:https://www.haomeiwen.com/subject/kmsabltx.html