简单又深度的理解JS逻辑运算符——与(&&)或(||)
简单又深度的理解JS逻辑运算符——与(&&)或(||)
&&
就是"和" "and"
||
就是"或者" "or"
抛弃你的想法,直接看demo:
var a = 1 && 2;
document.write(a)
输出:2
var b = 1 && 2 && 3;
document.write(b)
输出:3
是不是已经猜到了?再看一个
var c = 1 && false && 3;
document.write(c)
输出:false
【总结】:&&
运算从前往后找假,找不到就返回最后一个变量,找到了就返回这个变量,且后面不会再执行
(当然变量位置也可能放表达式,如 1 && 2+3
返回 5,为了好理解,用"变量"统一概括。)
举例子来说,一个项目需要3个人,小张,小李,小王来做,他们代号分别为1,2,3;秘书点名,"1号","到";"2号",没人吱声,秘书不再点名,直接走了,给经理说项目false。这就是第三个demo过程。
假如秘书点名,三个人都到了,秘书就会给经理说,3号都到了,项目可以开始了。这就是第二个demo过程。
同样的,或(||)
就是经理累了,想找个秘书捶背,就给秘书打电话,小张号码为空号(null),小李号码没有(undefined),小王号码没人接听(false),得出结论,都没来!
假如有一个人来了,直接就喊过去捶背了。
直接看demo:
var a = 0 || null || "" || undefined;
document.write(a)
输出:undefined
var b = false || 2+3 || 2;
document.write(b)
输出:5
【总结】:||
运算从前往后找真,找不到就返回最后一个变量,找到了就返回这个变量,且后面不会再执行。
【知识】为false的变量有:undefined、null、NaN、""、0、false本身,这些返回波尔类型都是false;
有一点需要强调,上面总结提到了后面不会再执行这句话,作用还是很大的。
比如: e && fun(e)
当参数e不存在或者为空的时候,后面的函数就不会执行!
又比如:var c = a || b
c默认等于a,只有a为false时,才会选择b
在实际开发中,这都是实用的小技巧。
【注意】在C语言中,只会返回波尔型(true
\ false
)不会是具体结果。