Javascript ES6最佳实践,变量实例化

时间:2017-01-17 16:33:08

标签: javascript angularjs node.js reactjs

我对我刚才读到的最佳做法有疑问: https://github.com/ryanmcdermott/clean-code-javascript#remove-duplicate-code

问题在于变量赋值

      let portfolio = employee.getGithubLink();

      if (employee.type === 'manager') {
        portfolio = employee.getMBAProjects();
      }

我这样做只是为了实例化一次投资组合。

      if (employee.type === 'manager') {
        let portfolio = employee.getMBAProjects();
      } else {
        let portfolio = employee.getGithubLink();
      }

我的问题是:为什么更好地实例化一个变量并覆盖它,而不是仅使用“else”语句对其进行一次实例化。

2 个答案:

答案 0 :(得分:1)

我会考虑

const portfolio = (employee.type === 'manager') ? employee.getMBAProjects() : employee.getGithubLink();

作为选项。如果没有正当理由,你不应该覆盖/改变变量。

答案 1 :(得分:1)

首先,如果您使用{定义变量,它只能在定义它的块范围内使用(在} portfolio内) 。因此,如果以您的方式执行,变量undefined将是var外部条件语句。在此选项中,您可以使用if (employee.type === 'manager') { var portfolio = employee.getMBAProjects(); } else { var portfolio = employee.getGithubLink(); } 关键字,它可以正常工作

var

但是现在谁使用else if

对于我来说,

次要,我认为,这种方式让其他开发人员感到困惑。所有样式指南都来自开发人员(包括您)的代码的可读性和可理解性。

理解一个特定变量的实例化更容易理解。在上面的例子中,我看到两个实例(无论只有一个将被执行)。如果您的代码有长{{1}}链?

,该怎么办?

第三,如果你在条件语句之外实例化变量,则需要少写。这很好。