首页 > 解决方案 > JavaScript if 语句不起作用

问题描述

我有如下功能

function test (x){
  if(x==='a' || x!=='b' ||'c')
  {
    console.log('result');
    console.log(x);
  }
  else {
    console.log('wrong') 
  } 
}

test('123');

我希望输出会记录“错误”,但它会记录 //result 123,如下图所示。我不确定是因为 if 条件不能这样工作吗?

在此处输入图像描述

标签: javascriptif-statementconditionalconsole.log

解决方案


'c'将始终解析为真。你基本上是在说,

是否'c'等同于真实值?

...当然可以(它是一个非空字符串)。阅读有关真/假的信息。

您可能假设这部分条件将“借用”前一个 (b's) ||。这不会发生。

所以你需要x === 'c'.

但是,您的逻辑很复杂。你确定你的意思是!== 'b'而不是=== 'b'?这意味着如果您传递除“b”以外的任何内容,则条件将解析为真,因为您仅使用“或”运算符。

总之,您可能的意思是:

if( x === 'a' || x === 'b' || x === 'c')

可以简化为

if (['a', 'b', 'c'].includes(x))

或者确实

if (/^[abc]$/.test(x))

推荐阅读