当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS运算符&&与||遵守短路原则讲解

JS运算符&&与||遵守短路原则讲解

2018年11月03日  | 移动技术网IT编程  | 我要评论

1.&& -- 与

符号前面和后面都为true则返回true,但是有一方为false则返回false。那么下面的内容会输出什么呢?

alert(1&&1); alert(1&&0); alert(0&&0); alert(0&&1);前提是你要知道,0即false, 1or2即true;

2.|| -- 非

符号前面和后面任何一方为true则返回true,双方均为false则返回false。那么下面的内容会输出什么呢?

alert(1||1); alert(1||0); alert(0||0); alert(0||1);前提是你要知道,0即false, 1or2即true;

不留悬念了,输出的内容依次是1, 0, 0, 0, 1,1,0,1

让我们总结一下:

只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

由上两个测试可知,逻辑运算符,“||”和“&&”都是遵行短路原则,只要确定符号前面的真假,既可确定返回值。

需要说明的是“&&”的优先级是高于“||”的,下面测试:

alert(1||'a'&&2);

返回结果是1。

根据反证原理,我们假设“||”的优先级不低于“&&”(这里只所以用“不低于”,是为了同时证明等级相同的情况)。

根据上面我们得出的结论(1),(1||'a')将返回前面的值1,(1&&2)根据结论(4)应该返回后面的值2。这显然不对,由此可知“&&”的优先级是高于“||”的。

敲知识点

&&的运算优先级大于 ||逻辑运算的短路特性:(表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”

(表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网