为什么我的病情总是如此

max*_*axd 1 javascript lodash

我想在这个例子中知道为什么我的病情总是如此?谢谢

function bla() {
  var qix = 'z'
  if (qix === 'a' || 'b' || 'c') {
     console.log('condition ok!! whats wrong???')
  }
}
Run Code Online (Sandbox Code Playgroud)

31p*_*piy 11

代码的问题在于if表达式始终求值为true.

qix === 'a' || 'b' || 'c'
Run Code Online (Sandbox Code Playgroud)

实际上会变成这样:

false || 'b' || 'c'
Run Code Online (Sandbox Code Playgroud)

qix设定为z.由于键入松散,JavaScript会返回true第二个表达式,因为'b'是一个真值.要更正此问题,您需要更改表达式,如下所示:

qix === 'a' || qix === 'b' || qix === 'c'
Run Code Online (Sandbox Code Playgroud)

所以它正确地表达了你所期待的.