Javascript 这些JS条件语句在功能上等价吗?

Javascript 这些JS条件语句在功能上等价吗?,javascript,if-statement,ternary-operator,Javascript,If Statement,Ternary Operator,关于条件if/else语句,以下示例在功能上是否等效 function isEntering() { if (this.stage === 'entering') { return true; } else { return false; } } function isEntering() { if (this.stage === 'entering') { return true; } return fa

关于条件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!='输入“

此外:

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

如前所述,您可以添加:

isEntering = () => this.stage === 'entering';
如果不需要函数,可以使用:

isEntering = this.stage === 'entering'

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

function isEntering() {
    if (this.stage === 'entering') {
        return true;
    } 
}
如果
this.stage!='输入“

此外:

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

如前所述,您可以添加:

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

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

isEntering=(this.stage=='entering')
您忽略了
isEntering=()=>this.stage=='entering'
.this one
function isEntering(){if(this.stage==='entering'){return true;}}
返回未定义的值。如果其他值返回false,则在示例1中缺少的括号中添加其他值。那么现在这四个都是等价的了?答案是肯定的,除了第三个返回
undefined
,而不是false。使用PM 77-1的注释。
isEntering=(this.stage=='entering')
您省略了
isEntering=()=>this.stage=='entering'
.this one
function isEntering(){if(this.stage==='entering'){return true;}}
返回未定义的值。如果其他值返回false,则在示例1中缺少的括号中添加其他值。那么现在这四个都是等价的了?答案是肯定的,除了第三个返回
undefined
,而不是false。使用PM 77-1的评论。谢谢,这就是我想要确定的。所以它不会返回“false”,除非您明确地将其作为一个条件。因此,它仍然是“假的”,并且评估为“假的”,但实际上在功能上并不完全等效。不,最后一个不是等效的。它设置变量
isEntering
,而不是用该名称定义函数。@torazaburo是对的,最后一个不是等效的,我会修正它。谢谢。因此,当需要一个函数时,这是最简洁的:isEntering=()=>this.stage===='entering';谢谢,这正是我想确定的。所以它不会返回“false”,除非您明确地将其作为一个条件。因此,它仍然是“假的”,并且评估为“假的”,但实际上在功能上并不完全等效。不,最后一个不是等效的。它设置变量
isEntering
,而不是用该名称定义函数。@torazaburo是对的,最后一个不是等效的,我会修正它。谢谢。因此,当需要一个函数时,这是最简洁的:isEntering=()=>this.stage===='entering';在es6胖箭头语法中,这将是:isEntering=()=>{returnthis.stage==='entering';};在es6胖箭头语法中,这将是:isEntering=()=>{returnthis.stage==='entering';};