JavaScript if语句不起作用

时间:2018-07-10 12:59:09

标签: javascript if-statement conditional console.log

我具有以下功能

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

test('123');

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

enter image description here

4 个答案:

答案 0 :(得分:2)

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

  

'c'等于真实值吗?

...当然可以做到(这是一个非空字符串)。 Read about truthy/falsy

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

因此您需要x === 'c'

但是,您有多种逻辑。您确定要使用!== 'b'而不是=== 'b'吗?这意味着,如果您仅使用“或”运算符,则通过“ b”以外的任何条件都可以将条件解析为true。

最后,您可能是说:

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

可以减少到

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

或者实际上

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

答案 1 :(得分:0)

您的最后一个条件是'c',即truthy

Boolean('c');
// true

答案 2 :(得分:0)

您正在使用OR语句。显然x(=123) !== 'b''c'也是如此。

所以这就是为什么结果是123

答案 3 :(得分:-1)

将if语句修改为以下内容 if(x ==='a'|| x!=='b'|| x!=='c')