布尔运算符

276 阅读3分钟

1.概述

布尔运算符用于将表达式转为布尔值,一共包含四个运算符:

  • 取反运算符:!
  • 且运算符:&&
  • 或运算符:||
  • 三元运算符:?:

2.取反运算符(!)

取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值为false:

  • undefined
  • null
  • false
  • 0
  • NaN
  • ''(空字符串) 如果对一个值连续做两次取反运算,等于将其转为对应的布尔值,与Boolean函数的作用相同。

3.且运算符(&&)

且运算符往往用于多个表达式的求值。 规则如下:

  • 如果第一个运算子的布尔值为true,则返回第二个运算子的值(是值而不是布尔值)
  • 如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值 这种跳过第二个运算子的机制,被称为“短路”。有时候可以用它来取代if结构,但是不容易看出目标,也容易出错,建议谨慎使用。
  • 且运算符可以多个连用,这时返回第一个布尔值为false的表达式的值
  • 如果所有表达式的布尔值都为true,则返回最后一个表达式的值

4.或运算符(||)

或运算符也用于多个表达式的求值。 规则如下:

  • 如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值
  • 如果第一个运算子的布尔值为false,则返回第二个运算子的值 短路规则也对这个运算符适用。即只通过第一个表达式的值,控制是否运行第二个表达式的机制,称为“短路”(short-cut)。
  • 或运算符可以多个连用,这时返回第一个布尔值为true的表达式的值
  • 如果所有表达式都为false,则返回最后一个表达式的值 或运算符常用于为一个变量设置默认值:如果函数调用时,没有提供参数,则该参数默认设置为某某某。

5.三元条件运算符(?:)

三元条件运算符由问号和冒号组成,分隔三个表达式。它是JavaScript语言唯一一个需要三个运算子的运算符。 规则如下:

  • 如果第一个表达式的布尔值为true,则返回第二个表达式的值,否则返回第三个表达式的值。
  • 通常来说,三元条件表达式与if...else语句具有同样表达效果,前者可以表达的,后者也可以表达。但有一个重大差别,if...else是语句,没有返回值;三元条件表达式是表达式,有返回值。 所以,在需要返回值的场合,只能使用三元条件表达式,而不能使用if...else。