
1.5 布尔值
拥有一个仅区分两种可能性的值通常很有用,例如“是”和“否”或“打开”和“关闭”。为此,JavaScript具有一个布尔类型,它只有true和false这两个可能的值,它们都被写为英语单词。
1.5.1 比较
以下是生成布尔值的一种方法:

>和<符号分别是“大于”和“小于”的传统符号。它们是二元运算符。应用它们会得到一个布尔值,表示在这种情况下它们是否成立。
字符串可以用相同的方式进行比较。

对字符串排序的方式大致是字母顺序,但不是你所想的在字典中看到的顺序:大写字母总是“小于”小写字母,所以"Z" < "a",而且非字母字符(! 、-,等等)也包括在排序规则中。比较字符串时,JavaScript从左到右遍历字符,逐个比较它们的Unicode代码。
其他类似的运算符是>=(大于或等于), <=(小于或等于), ==(等于)和!=(不等于)。

JavaScript中只有一个值不等于它自己,它就是NaN(“不是数字”)。

NaN应该表示无意义计算的结果,因此,它不等于任何其他无意义计算的结果。
1.5.2 逻辑运算符
还有一些操作可以应用于布尔值本身。JavaScript支持三个逻辑运算符:与、或、否。这些运算符可以用来“推理”布尔值。
&&运算符表示逻辑与。它是一个二元运算符,只有当给定的值都为真时,结果才为真。

||运算符表示逻辑或。如果给定的任何一个值为真,则结果为真。

逻辑否是用感叹号表示的(!)。它是一个一元运算符,可以对传给它的值取反,! true产生false,而!false得出true。
将这些布尔运算符与算术运算符和其他运算符混合时,何时需要括号并不总是很明显。在实践中,你通常可以了解到目前为止我们已经看到的运算符中,||具有最低优先级,然后是&&,然后是比较运算符(>、==,等等),然后是其余的运算符。选择这样的顺序,是为了在类似下面的典型表达式中,使用尽可能少的括号:

我将讨论最后一个逻辑运算符,它既不是一元的,也不是二元的,而是三元的,运算于三个值。它用问号和冒号写成,如下所示:

这被称为条件运算符(又称三元运算符,它是此语言中唯一的三元运算符)。问号左侧的值“选择”其他两个值中的哪一个将出现。如果左侧的值为true,则选择中间值,如果左侧的值为false,则选择右侧的值。