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')
并且请使用 const
或 let
进行变量声明。 var
会产生不同的错误。
在此代码块上的任何方向将不胜感激:
变体一:
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')
并且请使用 const
或 let
进行变量声明。 var
会产生不同的错误。