为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

长风秋雁 2021-06-11 18:44:49
我是 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 的代码产生了语法错误。
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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

  }

}


查看完整回答
反对 回复 2021-06-18
  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信