Javascript 这些JS条件语句在功能上等价吗?
关于条件if/else语句,以下示例在功能上是否等效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
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 onefunction isEntering(){if(this.stage==='entering'){return true;}}
返回未定义的值。如果其他值返回false,则在示例1中缺少的括号中添加其他值。那么现在这四个都是等价的了?答案是肯定的,除了第三个返回undefined
,而不是false。使用PM 77-1的注释。isEntering=(this.stage=='entering')
您省略了isEntering=()=>this.stage=='entering'
.this onefunction 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';};