51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

javascript中短路语法初探

前言 {#前言}

首先我们先了解什么是逻辑运算符

&& 逻辑与运算

|| 逻辑或运算

! 逻辑非运算

正统来说,参与逻辑运算的是boolean和boolean,得到的结果也是boolean

&& 逻辑与,"且" {#amp-amp-逻辑与,“且”}

值按照真值表来定

| a && b | | | |----------|---|----| | a | b | 结果 | | 真 | 真 | 真 | | 真 | 假 | 假 | | 假 | 真 | 假 | | 假 | 假 | 假 |

"都真才真","有假就假"。

命题1:"地球是圆的" 真的

命题2:"Adil很帅" 真的

命题1 命题2 真的

命题1:"1+1=3" 假的

命题2:"地球是方的" 假的

命题1 命题2 假的

|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | //逻辑运算符 console.log(true && true); //t console.log(true && false); //f console.log(false && true); //f console.log(false && false); //f |

|| 逻辑或,"或者" {#逻辑或,“或者”}

| a || b | | | |----------|---|----| | a | b | 结果 | | 真 | 真 | 真 | | 真 | 假 | 真 | | 假 | 真 | 真 | | 假 | 假 | 假 |

"有真就真","都假才假"

|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 | console.log(true || true); //t console.log(true || false); //t console.log(false || true); //t console.log(false || false); //f |

!就是"逻辑非",相反的 {#就是“逻辑非”,相反的}

|---------------|----------------------------------------------------------------------------------------------------------| | 1 2 3 | console.log(!true); //f console.log(!false); //t console.log(!!!!!!!!!false); //t //套娃行为?? |

运算顺序是非、与、或

|-------------------|----------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | true || false && !true || false; 原式 = true || false && false || false =true || false || false =true || false =true |

短路语法 {#短路语法}

如果计算一个且运算的时候,比如a && b,a如果就是一个false,那么就不会管b是什么,直接输出false就行了,等于说直接输出a。

如果计算一个且运算的时候,比如 a && b ,a如果就是一个true,那么也不用管b是什么,直接把b当做结果输出就行了。

也就是说,本质上计算机进行a&&b运算的时候,不是在进行逻辑分析,这小子就想着要么扔a,要么扔b。如果a是负性的,那么直接扔出a;如果a是正性的,直接扔出b。

短路语法: 要么a被短路,要么b被短路

负性的:false,null, 0, NaN, 空字符串(""),undefined

正性的:除了上面的,全是正性的。

|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 | false && 8 //false 因为计算机发现,且运算a已经是false了,直接输出false null && 8 //null 因为计算机发现,且运算a已经是false性的了,直接扔出来null true && 13 //13 因为计算机发现,且运算a是true,所以总结果就是看b,直接扔出b 12 && 13 //13 因为计算机发现,12当做true,所以总结果看b,直接扔出b 13 && 12 //12 因为计算机发现,13当做true,所以总结果看b,直接扔出b undefined && 哈哈 //undefined 不报错,因为a已经是负性的了,所以直接扔出a,哈哈不管 哈哈 && undefined //报错 true && NaN //NaN 扔后面 |

计算机发现a是真,那么扔a;如果a是假,那么扔b

|-----------------|----------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 | 0 || 18 //18 前面假,扔后面 18 || 0 //18 前面真,扔前面 undefined || NaN //NaN 前面假,扔后面 NaN || undefined //undefined 前面假,扔后面 |

最后重点 {#最后重点}

a&&b, 计算机要么执行a要么执行b。a真执行b,a假执行a;

a||b, 计算机要么执行a要么执行b。a真执行a,a假执行b。

赞(1)
未经允许不得转载:工具盒子 » javascript中短路语法初探