Javascript ES6最佳实践,variables实例化

我有一个关于我刚刚阅读的最佳实践的问题: https : //github.com/ryanmcdermott/clean-code-javascript#remove-duplicate-code

问题是关于variables赋值

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

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

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

我的问题是:为什么最好实例化一个variables并覆盖它,而不是用“else”语句实例化一次。

我会考虑的

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

作为一个选项。 没有正确的理由,你不应该覆盖/变异variables。

首先 ,如果使用let定义variables,则只能在其定义的块范围内(在{ } )使用variables。 因此,如果按照自己的方式进行操作,可变portfolio将在条件声明之外被undefined 在这个选项中,你可以使用var关键字,它会工作

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

但是现在谁使用var

其次 ,就我而言,我认为,这种方式对于其他开发人员来说是简单的混淆。 所有样式指南都来自开发人员(包括您)的代码的可读性和可理解性。

理解一个特定variables的实例化要容易得多。 在上面的情况下,我看到两个实例(不pipe只有一个将被执行)。 而如果你的代码将连锁很长else if连锁?

第三 ,如果你实例化variables外的条件语句,你需要写的更less,这是很好的。