逻辑与 &&
总结规律:
在有一个操作数不是布尔值的情况下,就不一定返回值:
1、如果第一个操作数隐式类型转换后为true,则返回最后一个操作数的值。
例子:console.log( 80 && 50 && "abc") //返回abc
2、如果第一个操作数隐式类型转换后为false,则返回第一个操作数的值。
例子:console.log( 0 && 50 && "abc") //返回0
3、如果有一个操作数是 null,则返回 null
4、如果有一个操作数是 undefined,则返回 undefined
5、如果有一个操作数是 NAN ,则返回 NAN
逻辑或 ||
在有一个操作数不是布尔值的情况下,就不一定返回值:
1、如果第一个操作数隐式类型转换后为true,则返回第一个操作数的值。
2、如果第一个操作数隐式类型转换后为false,则接着往下判断,直到判断为true,则返回该操作数的值。
3、不管操作数中隐式转换后为 NAN、undefined 、null,只要有判断为true的操作数,则返回该操作数的值。
例子:console.log( 0 ||“”|| null || "abc") //返回 abc
4、若所有操作数隐式转换后都为false,则返回最后一个操作数的值。(此情况包含NAN 、null、 undefined 存 在的情况)
例子:console.log( 0 ||“”|| null || NAN || undefined ) //返回 undefined
逻辑非 !!
没什么特别注意的,举几个例子吧:
1、console.log( !! "") //false;
2、console.log( !! "blue") //true;