JS逻辑运算符的与,或,非
1.逻辑非(!)
定义:所谓非,就是取反,非真即假,非假即真。
非运算符不仅仅只能用于布尔值,其他数据类型也是可以的,如下:
1.如果操作数是一个对象,返回false
2.如果操作数是一个空字符串,返回true
3.如果操作数是一个非空字符串,返回false
4.如果操作数是数值0,返回true
5.如果操作数是任意非0数值(包括Infinity), 返回false
6.如果操作数是null,返回true
7.如果操作数是NaN,返回true
8.如果操作数是undefined, 返回true
2.逻辑与(&&)
定义:作用于两到多个值,并且只有所有的操作数都是真值时,才为true。
JavaScript里面的与存在短路现象,具体说明如下:
1.第一个操作数为真:会进入第二个操作数的判断,且无论第二个操作数真假,都会返回第二个操作数。
2.第一个操作数为假:不会进入第二个操作数的判断,直接返回第一个操作数。
例:
//后面是输出的操作数
console.log(3 && 5);//5
console.log("Hello" && 20);//20
console.log("Hello" && false);//false
console.log("" && "shoe");//""
console.log("Hello" && '');//''
3.逻辑或(||)
定义:同样是作用于两到多个值,但是只要有一个操作数为真,就返回真。
JavaScript里面的或同样存在短路现象,具体说明如下:
1.如果第一个操作数为真,则不会进入第二个数的判断。所以无论第二个操作数真假,都直接返回第一个操作数
2.如果第一个操作数为假,则会进入第二个数的判断。但是无论第二个操作数真假,都直接返回第二个操作数
例:
//后面是输出的操作数
console.log(false || true);//true
console.log("Hello" || "");//Hello
console.log("Hello" || "str");//Hello
console.log(NaN || "");//""
console.log(0 || "Hello World");//Hello World
console.log('' || 'str');//str
console.log('' || false);//false