猿问

如何编写带有短路的 if 语句

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


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


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')是返回“未定义”。

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

而且我怎么能代替console.log()return?较早的带有 return 的代码产生了语法错误。


长风秋雁
浏览 203回答 2
2回答

慕妹3242003

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运行,因为第一个括号中的部分计算为 falsey 表达式。我想您可以更改逻辑,以便该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');  }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答