[英]How to code if-statement with short-circuit
我是JavasSript的新手,并且尝试编写带有短路的if
语句。
在下面的代码中,第一个试图查看输入是否为1,在控制台页面上显示“ yes”,否则为“ no”。
function checking (input) {
((input==1 && return 'yes') || return 'no')
}
然而,出于某种原因,我终于感受到,“是”和“不”,当输入为1。我试图测试通过更换return
用console.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";
}
如果value
为1
,则返回"yes"
,否则返回"no"
。
希望我的回答有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.