2017-10-21 144 views
-4

为什么不这项工作:链式逻辑或比较

if (x != (a || b || c)) { 
    doStuff(); 
} 

这意味着要检查x是否不等于A或B或C。

编辑:我将如何实现检查x是否不等于a或b或c?

编辑:好吧,它是重复的。我现在该做什么,即使在意识到我的错误之后,还是会减分? :P

+2

如果(X应该是'== ||一个== X || b X = = c)'。你的表达意味着什么,值可以是'a','b'或'c',这个值不应该等于'x'。作为替代方案,您可以尝试'[a,b,c] .indexOf(x)<0' – Rajesh

+0

'(a || b || c)'将返回第一个真值变量,并在'!='之前求值 – charlietfl

+0

' [a,b,c] .indexOf(x)<0' done:D –

回答

-2

像你想只是为了使用倍数值:!!!


 
var x = 'x'; 
 
var a = 'a'; 
 
var b = 'b'; 
 
var c = 'c'; 
 

 
function doStuff() { 
 
    console.log(1) 
 
} 
 

 
// exemple 1 
 
if(x == a || x == b || x == c) { 
 
    doStuff(); 
 
} 
 

 
function isSameValue(element, index, array) { 
 
    return element === x; 
 
} 
 

 
// exemple 2 
 
if([a, b, c].some(isSameValue)) { 
 
    doStuff(); 
 
} 
 

 
// exemple 3 
 
[a, b, c].includes(x);

+1

您需要更好地理解逗号运算符的工作原理 – charlietfl

+1

无论数值如何,这总是会返回'c'。这可能有所帮助:https://stackoverflow.com/questions/3561043/what-does-a-comma-do-in-javascript-expressions – Rajesh

+0

对不起,我的第一个答案,当我把c === x陷入陷阱并运行。哈哈哈。 – joelbarbosa