日期:2014-05-16  浏览次数:20482 次

请问布尔运算符
摘自--《JavaScript 权威指南》

当运算符&&的两个运算数都是布尔值时,它对这两个运算数执行布尔AND操作,即当且仅当它的两个运箅数都是true时,它才返回true。如果其中一个或两个运算数值 为false,它就返回false。

这个运算符的实际行为比较复杂。首先,它将计算第一个运算数,也就是位于它左边的表达式。如果这个表达式的值可以被转换成false,那么运算符将返回左边表达式的值。否则,它将计算第二个运算数,也就是位于它右边的表达式,并且返回这个表达式的值。



问题:
如果第一个表达式为false的话,整个表达式就应该为false啊,为什么还要计算第二个表达式呢?上面两段话是矛盾的吧




------解决方案--------------------
人也没说第一个是false的时候还要计算第二个表达式 - -

敢问LZ从哪句话推断出来的: 左边为 false, 还要计算右边
------解决方案--------------------
我想了好久怎么跟你去解释,汗,不知道你能否理解我的意思。

1.按位与是一种运算,

2.只有这一个运算,所以肯定是进行这个运算

3.运算的顺序是从左到右的

4.当第一个为FALSE的时候,开始进行运算判断,系统识别到你的输入是按位与(&&),结合第一个得到的结果FALSE,不再向下执行(PS:执行了也是无意义的运算)。

5.懂 了吗,我已经很形象的说了。
------解决方案--------------------
引用:
人也没说第一个是false的时候还要计算第二个表达式 - -

敢问LZ从哪句话推断出来的: 左边为 false, 还要计算右边
我打赌这个他第一次看到这种运算
------解决方案--------------------
我教一下楼主怎么阅读吧,关联词是很重要的一个割点,前后可能是递进关系,也可能是转折关系。比如然而,或者说,但是,那么,因此。从关联词你就可以发现前后句子是什么关系,那么前后句表达的意思也就不一样了,比如因此,这是一个结论性的关联词,那么后面这句话你要牢牢记住,因为是结论,而前面是解释和举例,这样的例子还有好多,对关联词的理解是阅读能力的体现,那么你这段话,有一个关联词“否则”,这说明前后表达的意思完全不一样,可以说是完全恰恰相反的意思,那么你为什么理解错呢,因为你漏掉了关联词这个在阅读里很重要的也很容易忽视的词,英语阅读也一样如此,好的书籍有很好的关联词作为给读者的一个桥梁去理解作者的思想