关于条件if / else语句,以下示例在功能上是等效的吗?
function isEntering() {
if (this.stage === 'entering') {
return true;
} else {
return false;
}
}
function isEntering() {
if (this.stage === 'entering') {
return true;
} return false;
}
function isEntering() {
if (this.stage === 'entering') {
return true;
}
}
isEntering = (this.stage === 'entering') ? true : false;
如果是这样,我会使用最简洁的选项。但只有这四者在功能上是等价的。
答案 0 :(得分:4)
如果expr
是一个布尔表达式,就像在这里一样,那么就没有必要写
if (expr) return true;
else return false;
或写
if (expr) x = true;
else x = false;
或永远写
expr ? true : false
因为是一个布尔表达式,expr
可以直接返回或分配:
return expr;
x = expr;
最简洁的选择是你没有给出的选择:
function isEntering() { return this.stage === 'entering'; }
答案 1 :(得分:1)
它们并非完全等同。 前两个是等价的,但是:
function isEntering() {
if (this.stage === 'entering') {
return true;
}
}
如果undefined
,则会返回this.stage !== 'entering'
。
此外:
isEntering = (this.stage === 'entering') ? true : false;
没有将功能定义为其他示例。
如上所述,您可以添加:
isEntering = () => this.stage === 'entering';
如果您不需要功能,可以使用:
isEntering = this.stage === 'entering'
答案 2 :(得分:-1)
1,2和4的结果将是相同的。
但是3可以返回undefined
和
对于最佳实践,您可以使用第4个