Javascript: If (x === 'foo' || 'bar') 在我使用 'bar' 时没有产生真实的陈述。为什么?

Javascript: If (x === 'foo' || 'bar') does not yield a true statement when i use 'bar' . Why?

在此代码块上的任何方向将不胜感激:

变体一:

    var x = 'bar';

    function myFunction(){

        if (x === ('foo' || 'bar')) {
        
           return 'Match';
    
        } else if (x === 'nofoo'){
      
          return 'No Match';

        } else
    
          return 'Blank field';
    }

    console.log(myFunction());

当我有 var x 的字符串栏时,控制台会显示 'Blank field'。

当我有 var x = 'foo'

时,控制台显示 'Match'

变体二:

如果我删除以下行的括号:

if (x === 'foo' || 'bar')

然后输入 var x = '[here]';成为一场比赛。

一个称职的程序员如何编写代码,以便如果 x 是 'foo' 或 'bar' 它 returns 是一个真实的陈述。

if (x === 'foo' || x === 'bar')

就像那样...;)

那不是 || 的用法。您应该检查 x 是否等于 foo 或者 x 是否等于 bar;

if (x === 'foo' || x === 'bar')

在您的第一个代码中,x === ('foo' || 'bar') 表示:如果 x 等于 'foo' || 'bar' 的结果,即 'foo',因为 || 产生第一个真实元素.所以在这种情况下,代码等同于 if(x === 'foo').

在您的第二个代码中,x === 'foo' || 'bar' 表示:如果 x 等于 'foo' 或者如果 'bar' 由于 === 优先于 ||。由于 'bar' 为真,因此代码等同于 if(true).

你应该像这样分开 'foo' 和 'bar' 比较:

if (x === 'foo' || x === 'bar')

并且请使用 constlet 进行变量声明。 var 会产生不同的错误。