在开发学习过程中经常会在JS代码中看到 && 和 ||  这两个符号 ,一直以来看到都是根据代码环境中的逻辑大概八九不离十的判断出这写符号的意思,但是没有仔细研究具体的含义和区别,今天在学习过程中看到了这个相关的说明,现在就记录下来。


首先  && 和 || 这两个符号的作用都是在布尔值的运算的条件下进行“并且”和“或者”的方式定义。

由于在javascript

"" , false , 0 , null , undefined , NaN

这些值都会视为false处理。除此之外的的内容都会视为true  


a || b:如果a的值是true,那么b不管是true还是false,都返回true。因此不用判断b了,这个时候刚好判断到a,因此返回a。

   如果a得值是false,那么就要判断b,如果b是true,那么返回true,如果b是false,返回false。

a && b:如果a的值是false,那么不管后面的b是true还是false,统一 都返回false,也就是说不用判断b了,这个时候刚好判断到a,因此返回a。

   如果a的值是true,那么就要在判断b,和刚刚一样,不管b是true是false,都返回b。


例如:

var a=new Object(),b=0,c=Number.NaN,d=1,e="Hello World";
alert(a || b && c || d && e);

1、(b && c):b是false,此时不需要判断c,因为不管c是true是false,最终结果一定是false,因此返回当前判断对象b,也就是0;

2、(d && e):d是true,这个时候判断e,此时不管e是true,是false,返回结果一定是e,e为true,因此返回"Hello";

3、(a || b):a是true,此时不管b是true是false,结果都是true,所以不判断b,所以返回当前判断对象a,因此返回new Object();

4、(a || e):同上,因此返回a。