布尔值

拥有一个值,它能区分两种可能性,通常是有用的,例如“是”和“否”或“开”和“关”。 为此,JavaScript 拥有布尔(Boolean)类型,它有两个值:truefalse,它们就写成这些单词。

比较

一种产生布尔值的方法如下所示:

  1. console.log(3 > 2)
  2. // → true
  3. console.log(3 < 2)
  4. // → false

><符号分别表示“大于”和“小于”。这两个符号是二元运算符,通过该运算符返回的结果是一个布尔值,表示其运算是否为真。

我们可以使用相同的方法比较字符串。

  1. console.log("Aardvark" < "Zoroaster")
  2. // → true

字符串排序的方式大致是字典序,但不真正是你期望从字典中看到的那样:大写字母总是比小写字母“小”,所以"Z"<"A",非字母字符(!-等)也包含在排序中。 比较字符串时,JavaScript 从左向右遍历字符,逐个比较 Unicode 代码。

其他类似的运算符则包括>=(大于等于),<=(小于等于),==(等于)和!=(不等于)。

  1. console.log("Apple" == "Orange")
  2. // → false

在 JavaScript 中,只有一个值不等于其自身,那就是NaN(Not a Number,非数值)。

  1. console.log(NaN == NaN)
  2. // → false

NaN用于表示非法运算的结果,正因如此,不同的非法运算结果也不会相等。

逻辑运算符

还有一些运算符可以应用于布尔值上。JavaScript 支持三种逻辑运算符:与(and),或(or)和非(not)。这些运算符可以用于推理布尔值。

&&运算符表示逻辑与,该运算符是二元运算符,只有当赋给它的两个值均为true时其结果才是真。

  1. console.log(true && false)
  2. // → false
  3. console.log(true && true)
  4. // → true

||运算符表示逻辑或。当两个值中任意一个为true时,结果就为真。

  1. console.log(false || true)
  2. // → true
  3. console.log(false || false)
  4. // → false

感叹号(!)表示逻辑非,该运算符是一元运算符,用于反转给定的值,比如!true的结果是false,而!false结果是true

在混合使用布尔运算符和其他运算符的情况下,总是很难确定什么时候需要使用括号。实际上,只要熟悉了目前为止我们介绍的运算符,这个问题就不难解决了。||优先级最低,其次是&&,接着是比较运算符(>==等),最后是其他运算符。基于这些优先级顺序,我们在一般情况下最好还是尽量少用括号,比如说:

  1. 1 + 1 == 2 && 10 * 10 > 50

现在我们来讨论最后一个逻辑运算符,它既不属于一元运算符,也不属于二元运算符,而是三元运算符(同时操作三个值)。该运算符由一个问号和冒号组成,如下所示。

  1. console.log(true ? 1 : 2);
  2. // → 1
  3. console.log(false ? 1 : 2);
  4. // → 2

这个被称为条件运算符(或者有时候只是三元运算符,因为它是该语言中唯一的这样的运算符)。 问号左侧的值“挑选”另外两个值中的一个。 当它为真,它选择中间的值,当它为假,则是右边的值。