美文网首页
翻译 eslint-config-airbnb

翻译 eslint-config-airbnb

作者: kakaka0234 | 来源:发表于2018-04-03 13:43 被阅读0次

    如果对于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()
    
    命名函数表达式

    相关文章

      网友评论

          本文标题:翻译 eslint-config-airbnb

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