翻译 eslint-config-airbnb

如果对于eslint的那些规范只知其然,不知其所以然。 那么 airbnb 的规范还是值得一读的。 https://github.com/lin-123/eslint-config-airbnb-ch

举个栗子

为什么要使用命名函数表达式而不是函数声明

函数声明式作用域被提前了,这意味着在一个文件里函数很容易(太容易了)在其定义之前被引用。这样伤害了代码可读性和可维护性。如果你发现一个函数有大又复杂,这个函数妨碍这个文件其他部分的理解性,这可能就是时候把这个函数单独抽成一个模块了。别忘了给表达式命名——匿名函数会在错误调用栈里难以定位

// bad
function foo() {
  // ...
}

// bad
const foo = function () {
  // ...
};

// good, 函数表达式也需要命名
const foo = function bar() {
  // ...
};

解析

命名函数表达式有两点好处

  1. 函数声明式作用域被提前了, 这一点大家很清楚,就不多说了。
  2. 匿名函数会在错误调用栈里难以定位, 对于这一点为什么会有这个问题呢?

请看下面这个栗子:

  • bad, 这种情况下我们就很难通过调用栈定位foo到底调用了哪一个匿名函数
let foo = function () {
  console.log('hello foo');
}

// todo somthing
// ...

foo = function () {
  console.log('also foo');
}
foo()
匿名函数表达式
  • good。 而这种写法在调用栈里就会很明确是调用了 bar 还是 baz
let foo = function bar() {
  console.log('hello foo');
}

// todo somthing
// ...

foo = function baz() {
  console.log('also foo');
}
foo()
命名函数表达式
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,791评论 2 45
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,265评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,085评论 25 709
  • 新零售到底是什么? 以消费者体验为中心的数据驱动的泛零售形态 原因: 1、电商、实体零售发展变缓,需要寻找新的增长...
    PMskill产品社区阅读 5,830评论 5 29
  • 这个暑假,我过得非常扬眉吐气,因为稿费,因为有一笔不菲的稿费。 因为自己喜欢码字,因为自己喜欢在网上写文章,近10...
    西瓜甜甜啦阅读 7,178评论 128 111

友情链接更多精彩内容