Javascript ES6最佳实践,变量实例化
我有一个关于我刚读到的最佳实践的问题: 问题是关于变量赋值的Javascript ES6最佳实践,变量实例化,javascript,angularjs,node.js,reactjs,Javascript,Angularjs,Node.js,Reactjs,我有一个关于我刚读到的最佳实践的问题: 问题是关于变量赋值的 let portfolio = employee.getGithubLink(); if (employee.type === 'manager') { portfolio = employee.getMBAProjects(); } 我这样做是为了只实例化一次投资组合 if (employee.type === 'manager') { let p
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”语句实例化一次更好呢
const portfolio = (employee.type === 'manager') ? employee.getMBAProjects() : employee.getGithubLink();
作为一种选择。您不应无正当理由覆盖/变异变量。首先,如果您使用
let
定义变量,它将仅在定义它的块范围内可用(在{
}
内)。所以,如果按您的方式执行,变量投资组合
将是未定义的
外部条件语句。在这个选项中,您可以使用var
关键字,它会起作用
if (employee.type === 'manager') {
var portfolio = employee.getMBAProjects();
} else {
var portfolio = employee.getGithubLink();
}
但是现在谁在使用var
Secondary,对于我来说,我认为这种方式对于其他开发人员来说简直是一种困惑。所有样式指南都来自于代码对开发人员(包括您)的可读性和可理解性
了解一个特定变量的一个实例化要容易得多。在上面的例子中,我看到两个实例化(不管只执行一个)。如果您的代码将具有长或者如果链呢
第三,如果在条件语句之外实例化变量,那么您需要写得更少,这是好的。因为按照您的方式,如果类型
不是“管理者”,那么组合
变量将不存在,有条件地创建变量通常是个坏主意。如果您尝试在脚本中使用portfolio
而类型不是manager,会发生什么情况?老实说,我认为这实际上取决于情况以及您将如何使用该变量。但是,拥有/使用可能未定义的变量是一个糟糕的想法。抱歉@Carcigenicate我编辑它时出错了!反问:调用.getGithubLink()的代价有多高?三元运算符可以避免进行两次调用的可能性。或者声明它=null,然后执行if/else赋值。@AlexyHody Ahh。不过,在你的新例子中,我认为这是行不通的。不让
将范围限制到封闭块吗?忽略这一点,我认为两者之间的任何区别都比任何东西都更主观。如果你知道只有两种选择的话,三元可能是最好的选择。哦,是的三元!谢谢