运算符 && 和 || 的返回值

今天才知道,原来 && 和|| 的返回值是这样计算的 

&&首先计算其左边的表达式,如果它的值为false或可被转换为false(null、NaN、0或undefined),那么将返回左边表达式的值,否则,它将计算右边的表达式, 并返回这个表达式结果作为 &&运算的结果。 

||首先计算其左边的表达式,如果它的值不为false或不可被转换为false(null、NaN、0或undefined),那么将返回左边表达式的值,否则,它将计算右边的表达式, 并返回这个表达式结果作为 &&运算的结果。
 
Html代码  
<HTML> 
 <HEAD> 
  <TITLE> 运算符&&和||的返回值 </TITLE> 
 </HEAD> 
 <BODY> 
 &&首先计算其左边的表达式,如果它的值<font color=blue>为false</font>或<font color=blue>可被转换为false</font><font color=red>(null、NaN、0或undefined)</font>,那么将返回左边表达式的值,否则,它将计算右边的表达式, 
 并返回这个表达式结果作为 &&运算的结果。<br> 
||首先计算其左边的表达式,如果它的值<font color=blue>不为false</font>或<font color=blue>不可被转换为false</font><font color=red>(null、NaN、0或undefined)</font>,那么将返回左边表达式的值,否则,它将计算右边的表达式, 
 并返回这个表达式结果作为 &&运算的结果。 
 <hr> 
  <SCRIPT LANGUAGE="JavaScript"> 
    function dwn(s) 
    { 
        document.write(s + "<br/>"); 
    } 
 
    dwn("null && 33 = " + (null && 33));//null 
    dwn("NaN && 33 = " + (NaN && 33));//NaN 
    dwn("0 && 33 = " + (0 && 33));//0 
    dwn("undefined && 33 = " + (undefined && 33));//undefined 
    dwn("true && 33 = " + (true && 33));//33 
    dwn("false && 33 = " + (false && 33));//false 
    dwn("33 && 44 = " + (33 && 44));//44 
    dwn("---------"); 
 
    dwn("null || 33 = " + (null || 33));//33 
    dwn("NaN || 33 = " + (NaN || 33));//33 
    dwn("0 || 33 = " + (0 || 33));//33 
    dwn("undefined || 33 = " + (undefined || 33));//33 
    dwn("true || 33 = " + (true || 33));//true 
    dwn("false || 33 = " + (false || 33));//33 
    dwn("33 || 44 = " + (33 || 44));//33 
     
</SCRIPT> 
<hr> 
同时javascript中 if (expression) statement; 语句的判断也是<br> 
看 expression 是否是不是 false 或 能不能转换成false(null、NaN、0或undefined)<br> 
如果能 则不执行 statement; 否则就执行 statement; 
<hr/> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
    if (null) 
        dwn("null test"); 
    if (0) 
        dwn("0 test"); 
    if (undefined) 
        dwn("undefined test"); 
    if (NaN) 
        dwn("NaN test"); 
    if (444) 
        dwn("444 test"); 
//--> 
</SCRIPT> 
<hr> 
由此可见,if (a==b)dosth();和a==b&&dosth();或a!=b||dosth()等价 
 
 </BODY> 
</HTML>  
原文地址:https://www.cnblogs.com/ningyanbo/p/5084589.html