这些比较使用||有什么区别而且,

时间:2014-09-09 18:41:54

标签: javascript

这两个陈述之间有什么区别。当我交替使用这些时,我会得到不同的结果。我希望有人可以帮我解释一下。那么,这是什么区别......

else if ( ( elecshow ==2,3,4,5,6,8,9,10,16 ) )

这......

else if ( ( elecshow ==2 ) || ( elecshow ==3 ) || ( elecshow ==4 ) || ( elecshow ==5 ) || ( elecshow ==6 ) || ( elecshow ==8 ) || ( elecshow ==9 ) || ( elecshow ==10 ) || ( elecshow ==16 ) )

我知道这很简单,但您的意见不胜感激。

2 个答案:

答案 0 :(得分:2)

检查comma operator实际上做了什么。您的第一个代码段相当于

else if ( ((((((((elecshow ==2),3),4),5),6),8),9),10),16 )

或(如果我们假设评估elecshow不投掷等)只是

else if ( 16 )

您需要使用第二个,尽管您可以将其缩短为类似

else if (elecshow > 1 && elecshow <= 10 && elecshow != 7 || elecshow == 16)

答案 1 :(得分:2)

comma operator

  

计算每个操作数(从左到右)并返回最后一个操作数的值

结合== higher precedence而不是,的事实,这里发生的事情是评估elecshow ==2,然后是3,然后{{1} },...最后是4

返回最后一次评估,16为真值,执行将进入16

结果与

不同
else if

只是因为它是一个完全不同的运营商!