JS-逻辑运算符的与,或,非

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" && '');//''

经典题:

let a = true;

let b = a && c;//因为a是true,所以会判断第二个数。

console.log(b); //ReferenceError: c is not defined

let a = false;

let b = a && c;// 因为a是false,所以不会判断第二个数。

console.log(b);//false

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

经典题:

let a = false;

let b = a || c;因为a是false,所以会判断第二个数。

console.log(b); //ReferenceError: c is not defined

let a = true;

let b = a && c;// 因为a是true,所以不会判断第二个数。

console.log(b);//true
原文地址:https://www.cnblogs.com/CccK-html/p/11375390.html