布尔值
拥有一个值,它能区分两种可能性,通常是有用的,例如“是”和“否”或“开”和“关”。 为此,JavaScript 拥有布尔(Boolean
)类型,它有两个值:true
和false
,它们就写成这些单词。
比较
一种产生布尔值的方法如下所示:
console.log(3 > 2)
// → true
console.log(3 < 2)
// → false
>
和<
符号分别表示“大于”和“小于”。这两个符号是二元运算符,通过该运算符返回的结果是一个布尔值,表示其运算是否为真。
我们可以使用相同的方法比较字符串。
console.log("Aardvark" < "Zoroaster")
// → true
字符串排序的方式大致是字典序,但不真正是你期望从字典中看到的那样:大写字母总是比小写字母“小”,所以"Z"<"A"
,非字母字符(!
,-
等)也包含在排序中。 比较字符串时,JavaScript 从左向右遍历字符,逐个比较 Unicode 代码。
其他类似的运算符则包括>=
(大于等于),<=
(小于等于),==
(等于)和!=
(不等于)。
console.log("Apple" == "Orange")
// → false
在 JavaScript 中,只有一个值不等于其自身,那就是NaN
(Not a Number,非数值)。
console.log(NaN == NaN)
// → false
NaN
用于表示非法运算的结果,正因如此,不同的非法运算结果也不会相等。
逻辑运算符
还有一些运算符可以应用于布尔值上。JavaScript 支持三种逻辑运算符:与(and),或(or)和非(not)。这些运算符可以用于推理布尔值。
&&
运算符表示逻辑与,该运算符是二元运算符,只有当赋给它的两个值均为true
时其结果才是真。
console.log(true && false)
// → false
console.log(true && true)
// → true
||
运算符表示逻辑或。当两个值中任意一个为true
时,结果就为真。
console.log(false || true)
// → true
console.log(false || false)
// → false
感叹号(!
)表示逻辑非,该运算符是一元运算符,用于反转给定的值,比如!true
的结果是false
,而!false
结果是true
。
在混合使用布尔运算符和其他运算符的情况下,总是很难确定什么时候需要使用括号。实际上,只要熟悉了目前为止我们介绍的运算符,这个问题就不难解决了。||
优先级最低,其次是&&
,接着是比较运算符(>
,==
等),最后是其他运算符。基于这些优先级顺序,我们在一般情况下最好还是尽量少用括号,比如说:
1 + 1 == 2 && 10 * 10 > 50
现在我们来讨论最后一个逻辑运算符,它既不属于一元运算符,也不属于二元运算符,而是三元运算符(同时操作三个值)。该运算符由一个问号和冒号组成,如下所示。
console.log(true ? 1 : 2);
// → 1
console.log(false ? 1 : 2);
// → 2
这个被称为条件运算符(或者有时候只是三元运算符,因为它是该语言中唯一的这样的运算符)。 问号左侧的值“挑选”另外两个值中的一个。 当它为真,它选择中间的值,当它为假,则是右边的值。