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,这是很好的。
- 集成NodeJS和Angular的最佳方法
- 我该如何补救“错误:无法find模块”subprocessclosures“”?
- 通过Git部署简单的SPA到Azure
- 使用grunt-obfuscator混淆js文件:未捕获ReferenceError:require未定义
- 在WebStorm的同一个项目中使用Angular 1x和Node.js
- Angular没有响应任何路由与ui路由器 – URL只是消失时,我进入
- AngularJS中多个$ http请求的最佳做法是什么?
- Multer不接受数组格式的文件会导致“Unexpected File Error”
- 强制量angular器onPrepare等待asynchronoushttp请求