逻辑运算符
JavaScript 里有三个逻辑运算符:||
(或),&&
(与),!
(非)。
当我们想要表达多个条件之间必须同时满足时,就可以使用 &&
。想要表达多个条件之间,只需要满足一个即可时, 就可以使用||
。
&&
与(且):两个都为真,结果才为真。||
或:只要有一个是真,结果就是真。!
非:对一个布尔值进行取反。
1. 连比的写法
来看看逻辑运算符连比的写法。
举例 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
,没有这种语法。
2. 短路运算
如果操作数不仅仅是一个值,而是一个表达式,例如变量赋值或函数调用,那么这一特性的重要性就变得显而易见了。
(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
上面的例子,我们可以看到,对非布尔值进行!
操作之后,返回结果为布尔值。
3. 非布尔值的与或运算
但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。
在实际开发中,我们经常用这种代码做容错处理。
非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,但返回结果是原值。比如说:
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
的结果