这些 JS 条件语句在功能上是否等效?

Are these JS conditional statements functionally equivalent?

关于条件 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;

如果是这样,我会使用最简洁的选项。但前提是这四个在功能上是等价的。

它们并不完全等同。 前两个是等价的,但是:

function isEntering() {
    if (this.stage === 'entering') {
        return true;
    } 
}

如果 this.stage !== 'entering' 会 return undefined

还有:

isEntering = (this.stage === 'entering') ? true : false;

没有像其他示例那样定义函数。

如前所述,您可以添加:

isEntering = () => this.stage === 'entering';

如果您不需要某个功能,您可以使用:

isEntering = this.stage === 'entering'

如果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'; }