JS逻辑运算符
一、逻辑非!一元运算符(只需要1个操作数)
1、!:把操作数转为布尔值,再对布尔值取反
!!:把任意值转化为布尔值(两次取反,还原布尔值本质)
!true;//false
!false;//true
!0;//true
!"";//true
!"abc";//false
!null;//true
!!0;//false
!!"hello";//true
!!"undefined";//false
二、逻辑与&&二元运算符(需要2个操作数)
1、核心规则:
【全真才真】:只有左右两侧都为真,结果才为真;只要有一个假,结果就为假。
【短路求值】:如果左侧为假,直接返回左侧值,不会执行右侧代码。
2、布尔值运算:
true&&true//true(左右两侧全为真)
true&&false//false(左侧为真,返回右侧)
false&&false//false(左侧为假,直接返回左侧值false)
2、非布尔值运算:
1&&2;//2(左右两侧都为真,左侧为真,转右侧2)
0&&2;//0(左侧为false,直接返回0)
"a"&&"b";//"b"(左侧为真,返回右侧)
null&&"b";//null(左侧假,返回null)
三、逻辑或||二元运算符(需要2个操作数)
【有真则真】:只要左右两侧有一个为真,结果就为真;全假才假。
【短路求真】:如果左侧为真,直接返回左侧值,不会执行右侧代码。
true||false;//true(有真则真)
false||false;//false(全假才假)
1||2;//1(左侧为真,则返回左值1)
0||2;//2(左侧为假,返回右值2)
""||"默认值";//"默认值"(左侧为假,返回右值)
null||"兜底"//"兜底"(左侧为假,返回右值)
四、空值合并运算符??
只对【空值】null/undefined兜底:左侧是null或undefined才返回右值,否则返回左值;
【短路求值】:和||一样,左侧非空值则不执行右侧。

浙公网安备 33010602011771号