什么时候应该在if语句的条件中使用括号?

我有一个如此条件:

$(document).ready(function(){ var name = 'Stack'; var lastname = 'Overflow'; if( name == 'Stack' && lastname == 'Overflow' ) alert('Hi Stacker!'); }); 

所以我的alert被解雇了……

如果我把我的条件放在这样的括号内:

  $(document).ready(function(){ var name = 'Stack'; var lastname = 'Overflow'; if( (name == 'Stack') && (lastname == 'Overflow') ){ alert('Hi Stacker!'); } }); 

我的alert也被解雇了……

我的问题是:何时以及为什么我应该在if条件中使用括号? 谢谢!

如果需要检查多个条件,可以使用括号。

例如:如果全名是“StackOverflow”,则User也是Stacker,然后使用“Or”运算符添加另一个条件。

 if(((name == 'Stack') && (lastname == 'Overflow')) || FullName =='StackOverflow') 

如您所见,名称和姓氏放在一个括号内,这意味着它给出结果为true或false,然后它使用FullName条件执行OR运算。

并且在名称,姓氏和全名字段周围使用括号是可选的,因为它对条件没有任何影响。 但是如果您使用FullName检查其他条件,则将它们分组到括号中。

你的例子没有太大区别。 您可以阅读该参考运算符优先级(JavaScript)

你用它来强制关联,在你的例子中,这不会改变任何东西。 但请考虑这种情况:

 A and B or C 

与…有很大的不同

 A and (B or C) 

在这里,你将阻止表达式被理解为(A and B) or C ,这是javascript和数学做事的自然方式。

由于运算符优先级:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

如果你想了解更多细节,你最好先阅读这篇文章

但基本上==(相等)的权重大于&&(逻辑 – 和),所以在C && D给出之前评估A == B

 C <- A == B 

 D <- E == F 

因此,在特定情况下,在C或D中添加括号无关紧要。

在这种情况下绝不需要括号。 当然,尝试阅读第一个解决方案(没有)和第二个解决方案(带)。 第二个,它清晰,快速可读,易于维护。

当然,如果你必须改变优先级(在这种情况下你只有一个AND条件,但如果你需要和AND和OR?1和2或3优先级之间的变化“(1和2)或3” – “1和(2或3)“

考虑一下这句话

 if( i==10 || j == 11 && k == 12 || l == 13) 

你想要的是,如果我是10或j是11并且k是12或l是13那么结果应该是真的,但是说如果我是10,j是11,k是10而l是13条件将失败,因为等式的命运决定在k为aoon,因为&&出现在图片中。 现在,如果你不希望这发生,就这样说吧

 if( (i==10 || j == 11) && (k == 12 || l == 13)) 

在此ORs将首先执行,结果将为true。

Brackets ()用于对语句进行分组。

例如 – 如果你有一个'2 + 3 * 5'的表达式。

有两种阅读方式: (2+3)*52+(3*5)

要根据运算符优先级获得正确的o / p,必须将正确的表达式组合为*具有高于+优先级,因此正确的表达式将是2+(3*5)

第一个括号需要复杂的条件才能确保操作员的优先顺序。 我们举一个例子

  var x=1,y=1,z=0; if(x==0 && y==1 || z==0) { //always true for any value of x } what will happen here (0 && 1 ||1) ----> (0 ||1)----->1 && has high precedence over || if(x==0 && (y==1 || z==0)) alert('1'); { //correct way } 

如果不使用(y == 1 || z == 0)括号,则对于x的任何值,条件始终为true。

但如果你使用(..)条件返回正确的结果。