繁体   English   中英

如何使用短路对if语句进行编码

[英]How to code if-statement with short-circuit

我是JavasSript的新手,并且尝试编写带有短路的if语句。

在下面的代码中,第一个试图查看输入是否为1,在控制台页面上显示“ yes”,否则为“ no”。

function checking (input) {
    ((input==1 && return 'yes') || return 'no')
}

然而,出于某种原因,我终于感受到,“是”和“不”,当输入为1。我试图测试通过更换returnconsole.log

 checking(1); function checking (input) { ((input==1 && console.log('yes')) || console.log('no')) } // output => yes // output => no 

然后,我发现console.log('yes')返回的是'undefined'。

我怎样才能解决这个问题?

以及如何用return替换console.log() 带有return的早期代码会产生语法错误。

console.log返回undefined ,这是错误的,因此

((input==1 && console.log('yes')) || console.log('no'))
// equivalent to:
((true && console.log('yes')) || console.log('no'))
((true && undefined         ) || console.log('no'))
((        undefined         ) || console.log('no'))

因此,第二个console.log将运行,因为第一个括号中的部分计算为假表达式。

我想您可以更改逻辑,以便console.log部分是另一个计算为true表达式的一部分:

 checking(1); function checking (input) { ((input==1 && (console.log('yes')) || true) || console.log('no')) } 

但这确实非常奇怪,请改为使用条件运算符:

 checking(1); function checking (input) { console.log( input === 1 ? 'yes' : 'no' ); } 

if / else ,如果您需要多个语句而不是基于条件的单个表达式:

 checking(1); function checking (input) { if (input === 1) { console.log('yes'); // do something depending on input 1 } else { console.log('no'); } } 

您可以使用如下所示的三元运算符

function checking(input) {

  return input === 1 ? "yes" : "no";

}

如果value1 ,则返回"yes" ,否则返回"no"

希望我的回答有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM