这些 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'; }
关于条件 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'; }