Javascript 什么时候应该在if语句';什么情况?

Javascript 什么时候应该在if语句';什么情况?,javascript,jquery,Javascript,Jquery,我有这样一个if条件: $(document).ready(function(){ var name = 'Stack'; var lastname = 'Overflow'; if( name == 'Stack' && lastname == 'Overflow' ) alert('Hi Stacker!'); }); 所以我的警报被触发 如果我把我的条件放在这样的括号内: $(document).ready(function(){ var nam

我有这样一个if条件:

$(document).ready(function(){
  var name = 'Stack';
  var lastname = 'Overflow';
   if( name == 'Stack' && lastname == 'Overflow' )
   alert('Hi Stacker!');
});
所以我的
警报
被触发

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

 $(document).ready(function(){
  var name = 'Stack';
  var lastname = 'Overflow';
   if( (name == 'Stack') && (lastname == 'Overflow') ){
      alert('Hi Stacker!');
   } 
});
我的
警报
也被触发


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

在你的例子中没有太大区别。 你可以读一下作为参考

由于运算符优先级:

如果你想了解更多细节,最好读一下

但是基本上==(相等)的权重大于&&(逻辑and),因此
A==B
C&&D
给定之前进行评估

C <- A == B

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

例如:如果全名为“StackOverflow”,则用户也是堆垛机,然后使用“Or”运算符添加另一个条件

if(((name == 'Stack') && (lastname == 'Overflow')) || FullName =='StackOverflow')
正如您所看到的,name和last name被放在一个括号内,这意味着它给出一个结果true或false,然后使用FullName条件执行or操作


在name、lastname和fullname字段周围使用括号是可选的,因为这对条件没有任何影响。但是,如果您使用FullName检查其他条件,则将它们分组到括号中。

您使用它来强制关联,在您的示例中,这不会改变任何内容。但是考虑一下这个例子:

A and B or C 
这和

A and (B or C)

在这里,您将阻止将表达式理解为
(A和B)或C
,这是javascript和数学处理事情的自然方式。

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

当然,如果您必须更改优先级(在本例中,您只有一个AND条件,但是如果您需要AND和AND呢?1和2或3优先级在“(1和2)或3”-“1和(2或3)”之间更改,

括号
()
用于对语句进行分组

例如,如果您有一个表达式
'2+3*5'

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

要根据运算符优先级获得正确的o/p,必须对正确的表达式进行分组,如
*
的优先级高于
+
,因此正确的表达式将是
2+(3*5)
请考虑该语句

if( i==10 || j == 11 && k == 12 || l == 13)
你想要的是,如果我是10,或者j是11,k是12,或者l是13,那么结果应该是真的,但是如果我是10,j是11,k是10,l是13,这个条件将失败,因为方程的命运是在k决定的,正如图中所示,&&所示。现在如果你不想发生这种情况,请这样说

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

在这种情况下,ORs将首先执行,结果将为真。

第一个括号需要复杂的条件,以确保运算符优先级正确。让我们举一个例子

   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的任何值,条件始终为真

但是如果您使用(…),则条件将返回正确的结果


使用它对语句进行分组,您的示例将产生相同的结果,无论是否使用大括号。如果您希望一组语句在另一组语句之前运行,则可以将它们放在()中,您通常应该在必要时使用括号,而当出现问题时,@JFit OP指的是
()
在条件表达式中,而不是
{}
包装
if
语句的主体。啊,我的错..lol sry。删除了我的注释。这些内容可能会让人困惑,但大多数语言都使用相同的“scheme”。这就是为什么像LISP及其前缀符号这样的语言很棒的原因,因为它们没有歧义,它们是显式的(+ 1 1)
   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
    }