通过alert(1&&2)==2 alert(1||2)==1深入理解逻辑运算符||和&&

alert(1&&2)==2
alert(1||2)==1

我们对逻辑与(&&)和逻辑或(||)的认识是
对于 && 是全真为真
对于 || 是一真为真
看到上面的 1&&2 ==2就蒙了
应该这样计算

先来说说 ||(逻辑或), 从字面上来说,只有前后都是 false 的时候才返回 false,否则返回 true。

alert(0||1);//显然,我们知道,前面 0 意味着 false,而后面 1 意味着 true,那么上面的结果应该是 true,而事实返回的结果是 1。

alert(2||1);//前面 2 是 true,后面 1 也是 true,那返回结果又是什么呢?测试结果是 2,继续看:

alert('a'||1);//同样,前面 'a' 是 true,后面 1 也是 true;测试结果是 'a',下面

alert(''||1);//由上,我们知道前面 '' 是 false,后面 1 是 true,而返回结果是 1。再看下面

alert('a'||0);//前面 'a' 是 true,而后面 0 是 false,返回结果是 'a',继续下面

alert('a'||'b');//前面 'a' 是 true,后面 'b'是 false,返回结果是 'a',我们继续下面

alert(''||0);//前面 '' 是 false,后面 0 同样是 false,返回结果是0

alert(0||'');//前面0是false,后面''是false,返回结果是''

结论:

1、只要 || 前面为 false,不管 || 后面是 true 还是 false,都返回 || 后面的值。

2、只要 || 前面为 true,不管 || 后面是 true 还是 false,都返回 || 前面的值。

下面说说 &&(逻辑与), 从字面上来说,只有前后都是 true 的时候才返回 true,否则返回 false。

alert(''&&1);//结是返回 '', && 前面 '' 是 false,后面是 1是 true。

alert(''&&0);//结是返回 '', && 前面 '' 是 false,后面是 0 也是 false。

alert('a'&&1);//结是返回 1, && 前面 'a' 是 true,后面是 1 也是 true。

alert('a'&&0);//结是返回 0, && 前面 'a' 是 true,后面是 0 是 false。

alert('a'&&'');//结是返回 '', && 前面 'a' 是 true,后面是 '' 是 false。

alert(0&&'a');//结是返回 0, && 前面 0 是 false,后面是 'a' 是true。

alert(0&&'');//结是返回 0, && 前面 0 是 false,后面是 '' 也是false。

结论:

1、只要 && 前面是 false,无论 && 后面是 true 还是 false,结果都将返 && 前面的值;
2、只要 && 前面是 true,无论 && 后面是 true 还是 false,结果都将返 && 后面的值;

原文地址:https://www.cnblogs.com/ns10086/p/9305460.html