我有这样的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条件中使用括号?谢谢!
答案 0 :(得分:5)
您的示例没有太大区别。 你可以阅读它作为参考 Operator Precedence (JavaScript)
答案 1 :(得分:2)
你用它来强制关联,在你的例子中,这不会改变任何东西。但请考虑这种情况:
A and B or C
与
有很大不同A and (B or C)
在这里,你将阻止表达式被理解为(A and B) or C
,这是javascript和数学做事的自然方式。
答案 2 :(得分:1)
由于运算符优先级:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
如果您想了解更多详情,请阅读此内容
但基本上==(相等)权重超过&& (逻辑 - 和),因此在A == B
给定
C && D
C <- A == B
和
D <- E == F
因此,在特定情况下,在C或D中添加括号无关紧要。
答案 3 :(得分:0)
如果需要检查多个条件,可以使用括号。
例如:如果全名为“StackOverflow”,则User也是Stacker,然后使用“Or”运算符添加另一个条件。
if(((name == 'Stack') && (lastname == 'Overflow')) || FullName =='StackOverflow')
如您所见,名称和姓氏放在一个括号内,这意味着它给出结果为true或false,然后它使用FullName条件进行OR运算。
在名称,姓氏和全名字段周围括号是可选的,因为它对条件没有任何影响。但是,如果您使用FullName检查其他条件,则将它们分组到括号中。
答案 4 :(得分:0)
在这种情况下绝不需要括号。 当然,尝试阅读第一个解决方案(没有)和第二个解决方案(带)。第二个,它清晰,快速可读,易于保护。
当然,如果你必须改变优先级(在这种情况下你只有一个AND条件,但如果你需要和AND和OR?1和2或3优先级之间的变化“(1和2)或3” - “1和(2或3)”
答案 5 :(得分:0)
括号()
用于对语句进行分组。
前 - 如果你有一个表达式'2 + 3 * 5'
。
有两种方法可以阅读:(2+3)*5
或2+(3*5)
。
要根据运算符优先级获得正确的o / p,您必须将正确的表达式组合为*
,其优先级高于+
,因此正确的表达式将为2+(3*5)
。
答案 6 :(得分:0)
考虑声明
if( i==10 || j == 11 && k == 12 || l == 13)
你想要的是如果i是10或j是11并且k是12或l是13那么结果应该是真的,但是如果我是10,j是11,k是10,l是13条件将失败,因为方程的命运在k时决定为&amp;&amp;进来了。现在,如果你不希望这发生,就把它放在这个
if( (i==10 || j == 11) && (k == 12 || l == 13))
在此OR中将首先执行,结果将为真。
答案 7 :(得分:0)
第一个括号需要复杂的条件才能确保操作员的优先顺序。让我们举一个例子
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。
但如果你使用(..)条件返回正确的结果。