true||* == true, 第一个为true就不在看第二个了,值为true。
fasle || true == true 第一个为false继续看第二个,第二个为true就为true
false || false == false 第一个为false继续看第二个,第二个为false就为false
false &&* == false , 第一个为false就不在看第二个了,值为false。
true && false == false 第一个为true 继续看第二个,第二个为false 就为false
true && true == true 第一个为true 继续看第二个,第二个为true 就为true
当进行逻辑运算的不是布尔值,而是数字的时候,就等于相应的数字,当然先进性布尔判断,字符串也一样。
(1&&2&&5) || 3的值就为5,因为1为true继续判断第二个2也为true继续判断第三个5也为true,则前面为true不用判断3了,所以值为5
1&&2||3&&4|| 3这个就为2
0||''||'a'这个就为'a'因为前两个的布尔值都为false所以继续判断第三个。就为'a'。
你的题目在下面
false||6||true首先false继续判断第二个,则(false||6)这个的值为6.为真则不判断最后一个值了,就为6
而 false&&6 因为第一个已经false就不会看第二个6了,就为false
总结:其实&&运算返回真的条件是所有为真,所以有一个为假啦,就直接返回假啦。
而‖运算,返回为真的条件是有一个为真,所以会从头开始往后执行,如果遇到一个真就停止往后执行啦,直接返回真,而如果到最后还是假,那就是假。
/如果&&第一个为false则&&后面的值不论是true或者是false,都返回前面的值
//如果&&第一个为true,则&&后面的值不论是true或者是false,都返回后面的值
alert(f&&s);
alert(f&&null);
alert(null&&s);
alert(null&&null);
//只要||前面是false,不管||后面是true或者是false,都返回后面的值
//只要||前面是true,不管||后面是true或者是false,都返回前面的值
alert(f||s);
alert(f||0);
alert(0||s);
alert(0||0);
本文引自:https://segmentfault.com/q/1010000004309510
浙公网安备 33010602011771号