摘自--《JavaScript 权威指南》当运算符&&的两个运算数都是布尔值时,它对这两个运算数执行布尔AND操作,即当且仅当它的两个运箅数都是true时,它才返回true。如果其中一个或两个运算数值 为false,它就返回false。这个运算符的实际行为比较复杂。首先,它将计算第一个运算数,也就是位于它左边的表达式。如果这个表达式的值可以被转换成false,那么运算符将返回左边表达式的值。否则,它将计算第二个运算数,也就是位于它右边的表达式,并且返回这个表达式的值。问题:
如果第一个表达式为false的话,整个表达式就应该为false啊,为什么还要计算第二个表达式呢?上面两段话是矛盾的吧

解决方案 »

  1.   

    人也没说第一个是false的时候还要计算第二个表达式 - -敢问LZ从哪句话推断出来的: 左边为 false, 还要计算右边
      

  2.   

    我想了好久怎么跟你去解释,汗,不知道你能否理解我的意思。1.按位与是一种运算,2.只有这一个运算,所以肯定是进行这个运算3.运算的顺序是从左到右的4.当第一个为FALSE的时候,开始进行运算判断,系统识别到你的输入是按位与(&&),结合第一个得到的结果FALSE,不再向下执行(PS:执行了也是无意义的运算)。5.懂 了吗,我已经很形象的说了。