逻辑运算符

JavaScript 里有三个逻辑运算符:||(或),&&(与),!(非)。

当我们想要表达多个条件之间必须同时满足时,就可以使用 &&。想要表达多个条件之间,只需要满足一个即可时, 就可以使用||

  • && 与(且):两个都为真,结果才为真。

  • || 或:只要有一个是真,结果就是真。

  • ! 非:对一个布尔值进行取反。

连比的写法:

来看看逻辑运算符连比的写法。

举例 1:

console.log(3 < 2 && 2 < 4);

输出结果为 false。

举例 2:(判断一个人的年龄是否在 18~60 岁之间)

var a = prompt("请输入您的年龄");
alert(a >= 18 && a <= 65);

PS:上面的这个a>=18 && a<= 65千万别想当然的写成18<= a <= 65,没有这种语法。

短路运算

如果操作数不仅仅是一个值,而是一个表达式,例如变量赋值或函数调用,那么这一特性的重要性就变得显而易见了。

(1)JS 中的&&属于短路的与,如果第一个值为 false,则不会看第二个值。举例:

//第一个值为true,会检查第二个值
true && alert("看我出不出来!!"); // 可以弹出 alert 框

//第一个值为false,不会检查第二个值
false && alert("看我出不出来!!"); // 不会弹出 alert 框

// 有时,人们利用这个特性,只在左侧的条件为真时才执行命令。

(2)JS 中的||属于短路的或,如果第一个值为 true,则不会看第二个值。举例:

(3)如果对非布尔值进行逻辑运算,则会先将其转换为布尔值,然后再操作。举例:

//运算符接受一个参数,并按如下运作:
//将操作数转化为布尔类型:true/false。
//返回相反的值。
var a = 10;
a = !a;

console.log(a); // false
console.log(typeof a); // boolean

上面的例子,我们可以看到,对非布尔值进行!操作之后,返回结果为布尔值。

非布尔值的与或运算

但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。

在实际开发中,我们经常用这种代码做容错处理。

非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,但返回结果是原值。比如说:

var result = 5 && 6; // 运算过程:true && true;
console.log("result:" + result); // 打印结果:6(也就是说最后面的那个值。)

上方代码可以看到,虽然运算过程为布尔值的运算,但返回结果是原值。

那么,返回结果是哪个原值呢?我们来看一下。

与运算的返回结果:(以两个非布尔值的运算为例)表达式1 && 表达式2

  • 如果表达式1为 true,则必然返回表达式2的结果

  • 如果表达式1为 false,则直接返回表达式1的结果

或运算的返回结果:(以两个非布尔值的运算为例)表达式1 || 表达式2

  • 如果表达式1为 true,则直接返回表达式1的结果

  • 如果表达式1为 false,则返回表达式2的结果

文档更新时间: 2021-09-06 14:44   作者:张老师