![JavaScript编程精解(原书第3版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/171/30573171/b_30573171.jpg)
1.5 布尔值
拥有一个仅区分两种可能性的值通常很有用,例如“是”和“否”或“打开”和“关闭”。为此,JavaScript具有一个布尔类型,它只有true和false这两个可能的值,它们都被写为英语单词。
1.5.1 比较
以下是生成布尔值的一种方法:
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0026_0004.jpg?sign=1739319583-tAnloTzkqAeGye3Do1LbdeEiIqZxX5fE-0-d8284446f4cb3c76b4cd1c152347aea3)
>和<符号分别是“大于”和“小于”的传统符号。它们是二元运算符。应用它们会得到一个布尔值,表示在这种情况下它们是否成立。
字符串可以用相同的方式进行比较。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0027_0001.jpg?sign=1739319583-1raUv9mNd1fa1xuFgKyA6rSTsqrWnyUV-0-07d5db82199455a1aa1eb41384d60924)
对字符串排序的方式大致是字母顺序,但不是你所想的在字典中看到的顺序:大写字母总是“小于”小写字母,所以"Z" < "a",而且非字母字符(! 、-,等等)也包括在排序规则中。比较字符串时,JavaScript从左到右遍历字符,逐个比较它们的Unicode代码。
其他类似的运算符是>=(大于或等于), <=(小于或等于), ==(等于)和!=(不等于)。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0027_0002.jpg?sign=1739319583-9nHfigRmbAqL3Yr0vVkoLBuGDzwdbEif-0-2100f647e0b1af7ca5d728158fc7e01a)
JavaScript中只有一个值不等于它自己,它就是NaN(“不是数字”)。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0027_0003.jpg?sign=1739319583-BJ1uxFy9LqknR3pzRv8ZlieFi5lG3q8J-0-6428d65aa6b0b5ce7ebfa8b011acd538)
NaN应该表示无意义计算的结果,因此,它不等于任何其他无意义计算的结果。
1.5.2 逻辑运算符
还有一些操作可以应用于布尔值本身。JavaScript支持三个逻辑运算符:与、或、否。这些运算符可以用来“推理”布尔值。
&&运算符表示逻辑与。它是一个二元运算符,只有当给定的值都为真时,结果才为真。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0027_0004.jpg?sign=1739319583-QOBNXMP4oYjh083ozO3JWYUvooF96b7e-0-872558329fe59e518759dc15bd5189a5)
||运算符表示逻辑或。如果给定的任何一个值为真,则结果为真。
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0027_0005.jpg?sign=1739319583-zk4jDsda49ZnIrChuuNTlAaDSL0y3Laz-0-4235300c9dcc81c4ec1398b98ecdf2f2)
逻辑否是用感叹号表示的(!)。它是一个一元运算符,可以对传给它的值取反,! true产生false,而!false得出true。
将这些布尔运算符与算术运算符和其他运算符混合时,何时需要括号并不总是很明显。在实践中,你通常可以了解到目前为止我们已经看到的运算符中,||具有最低优先级,然后是&&,然后是比较运算符(>、==,等等),然后是其余的运算符。选择这样的顺序,是为了在类似下面的典型表达式中,使用尽可能少的括号:
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0027_0006.jpg?sign=1739319583-m6KqxdjYvhsymdnEkw3ZyFCXI0Jyz414-0-894731fae0be114436489738e54a8240)
我将讨论最后一个逻辑运算符,它既不是一元的,也不是二元的,而是三元的,运算于三个值。它用问号和冒号写成,如下所示:
![](https://epubservercos.yuewen.com/8B8394/16679181805565906/epubprivate/OEBPS/Images/figure_0028_0001.jpg?sign=1739319583-a16hJnfllVEip6mELdK0mW6A7ZX07w5G-0-3682f4d1ba5ab5e31b0755547cba4ac6)
这被称为条件运算符(又称三元运算符,它是此语言中唯一的三元运算符)。问号左侧的值“选择”其他两个值中的哪一个将出现。如果左侧的值为true,则选择中间值,如果左侧的值为false,则选择右侧的值。