令人头疼的布尔操作符

逻辑与

1 语法规范

&&

2 用法

  1. 当符号两端都有表达式时,只有两边结果都为true时,整个表达式才是ture。只要有一侧为flase时,整个表达式结果为flase。也就是所说的一假则假

  1. 逻辑与操作符是一种短路操作符,其第一个操作数就决定了结果,那么永远不会对第二个操作数求值

3 使用注意点

逻辑与操作符适用于任何类型的操作数,不限于布尔值。如果有操作数不是布尔值,但它并不一定会返回布尔值:

  • 如果第一个操作数是对象,则返回第二个操作数

  • 如果第二个操作数是对象,则只有第一个操作数的值为ture才会返回该对象

  • 如果两个操作数都是对象,则返回第二个操作数

  • 如果第一个操作数为null,则返回null

  • 如果第一个操作数为NaN,则返回NaN

  • 如果第一个操作数为undefined,则返回undefined

4 实例

<script>
        1>2&&console.log(1);
        因为左边表达式为假,所以在控制台不会出输出1
</script>
<script>
        1<2&&console.log(1);、
        左边表达式为真,所以运行右边表达式
</script>

逻辑或

1 语法规范

||

2 用法

  1. 当符号两端都有表达式时,只有当符号两端运算式运算结果都为false,整个表达式的结果才为false。当右侧运算式运算结果为true时,整个表达式运算结果就是true。也就是所说的一真则真

  1. 逻辑或操作符也具有短路的特性,对于逻辑或而言,第一个操作数为ture是,第二个操作数就不会再被求值了

3 使用注意点

  • 如果第一个操作数是对象,则返回第一个操作数

  • 如果第一个操作数是false,则返回第二个操作数

  • 如果两个操作数都是对象,则返回第一个操作数

  • 如果两个操作数都是null,则返回null

  • 如果两个操作数都是NaN,则返回NaN

  • 如果两个操作数都是undefined,则返回undefined

4 实例

<script>
        1<2||console.log(1);
        由于左边表达式为真,所以不运行右边表达式
</script>
<script>
        1>2||console.log(1);
        由于左边表达式为假,所以运行右边表达式
</script>

逻辑非

1 语法规范

!(叹号)

2 使用规则

  1. 这个操作符始终会返回布尔值,无论应用的是什么数据类型。逻辑非操作符首先将操作数转化为布尔值,然后再对其进行取反操作

  1. 对于一个数同时使用两个叹号(!!),相当于调用了转型函数Boolean()

console.log(!!"blue")//ture
console.log(!!NAN)//false
console.log(!!12345)//ture

猜你喜欢

转载自blog.csdn.net/qq_67896626/article/details/129169556