Javascript:当我使用'bar'时,如果(x ==='foo'||'bar')没有产生真实的语句。为什么?

时间:2018-11-07 16:31:36

标签: javascript conditional

对此代码块的任何指导将不胜感激

变化一:

    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的字符串栏时,控制台会弹出“空白字段”。

当我有var x ='foo'时,控制台显示'Match'

变化二:

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

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

然后将所有内容键入var x ='[here]';成为比赛。

胜任的程序员如何编写此代码,以便如果x为'foo'或'bar'则返回真实语句。

3 个答案:

答案 0 :(得分:1)

不是||的用法。您应该检查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'是真实的,由于===比{{1 }}。由于||是真实的,因此代码等效于'bar'

答案 1 :(得分:0)

> newtype IN_0 = IN_0 Integer deriving Show

> nminus :: IN_0 -> IN_0 -> IN_0
> nminus (IN_0 z) (IN_0 z')
>        | z >= 0 && z' >= 0 = IN_0 $ maximum(0,z-z')
>        | otherwise = IN_0 0

喜欢...;)

答案 2 :(得分:-3)

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

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

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