JavaScript入门教程前端入门教程

JavaScript逻辑运算符

2021-07-13  本文已影响0人  微语博客

逻辑运算符

前面我们学习了JS的算术运算符和比较运算符,本篇文章我们继续学习JS的逻辑运算符,在编程语言里,比较和逻辑运算符都是语句中重要的部分。

JavaScript 中有三个逻辑运算符:||(或),&&(与),!(非)。虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。

||(或运算)

||(或运算)在传统的编程中,逻辑或仅能够操作布尔值。如果参与运算的任意一个参数为 true,返回的结果就为 true,否则返回 false。下面是四种可能的逻辑组合:

算术运算符也就是我们熟悉的数学运算符,比如说 加法 +,减法 -,乘法 ×,除法 ÷,取余 %,求幂 ** ,前面四个都很简单,而取余和求幂需要说一说。

取余运算符是 %,尽管它看起来很像百分数,但实际并无关联。a % b 的结果是 a 整除 b 的 余数。比如下面:

console.log( true || true );   // true
console.log( false || true );  // true
console.log( true || false );  // true
console.log( false || false ); // false

在 JavaScript 中,处理运算时存在类型转换,逻辑运算符更加灵活强大。如果操作数不是布尔值,那么它将会被转化为布尔值来参与运算。数字 1 被作为 true 处理,数字 0 则被作为 false

console.log( 1 || false );   // 1
console.log( 1 || 0 );  // 1
console.log( 0 || false );   // false 
console.log( false || 0 );  // 0

其实从上面的比较来看,||(或运算)遇到true就会返回值,如果没有遇到true,那就返回最后一个值。这一特性可以总结为寻找第一个真值,而真值后面的值被忽略,形成了短路的状态,比如下面的多级或运算。

console.log( false || 0 || 1); //1
console.log( false || 0 || 0); //0 
console.log( false || 0 || false); //false
console.log( false || 1 || true); //1

在JavaScript中,空字符串,undefined,null,0,NaN等假值都会在运算中转换为false。

&&(与运算)

两个 & 符号表示 && 与运算符。在传统的编程中,当两个操作数都是真值时,与运算返回 true,否则返回 false

console.log( true && true );   // true
console.log( false && true );  // false
console.log( true && false );  // false
console.log( false && false ); // false

和上面的||(或运算)相反,与运算返回第一个假值,如果没有假值就返回最后一个值。

console.log( false && 0 && 1); //false
console.log( true && 0 && false); //0 
console.log( 1 && true && 0); //0
console.log( true && 1 && true); //true

与或组合运算,当出现与或组合运算时,与优先级会高于或优先级。

console.log( 1 && 0 || 2 && 3 ); // 3 根据优先级先算两个&&运算,最后或运算
console.log( 0 || 1 && 2 || 3 ); // 2 先算中间与运算,在算前面或运算,最后算后面或运算

!(非运算)

感叹符号 ! 表示布尔非运算符,要注意这里的感叹号是英文输入法状态下的。逻辑非运算符接受一个参数,将操作参数转化为布尔类型:true/false,并返回相反的值。

console.log( !true ); // false
console.log( !0 ); // true

两个非运算 !! 有时候用来将某个值转化为布尔类型:第一个非运算将该值转化为布尔类型并取反,第二个非运算再次取反。最后我们就得到了一个任意值到布尔值的转化。

alert( !!"HelloWorld" ); // true
alert( !!null ); // false

非运算符 ! 的优先级在所有逻辑运算符里面最高,所以它总是在 &&|| 之前执行。

上一篇下一篇

猜你喜欢

热点阅读