
上QQ阅读APP看书,第一时间看更新
2.2 布尔逻辑和短路
除了没有取值的类型(空类型,如never)和只有一个值的类型(单元类型,如void),还有只有两个取值的类型。大多数编程语言都提供了布尔类型,这是一种标准的、只有两个值的类型。
布尔值对真实性进行编码,其名称来自乔治·布尔。现在所谓的“布尔代数”,是乔治·布尔最早描述的,这种代数包含一个真值(1)和一个假值(0),并规定了可对这两个值进行的逻辑运算,如AND、OR和NOT。
一些类型系统将布尔类型作为内置类型,提供了值true和false。另一些系统则依赖数字来表示布尔值,它们将0视为false,将其他任意数字视为true(即所有非假的就是真)。TypeScript内置了一个boolean类型,其两个取值为true和false。
无论是存在基本的布尔类型,还是从其他类型的值来推断真值,大多数编程语言都使用某种形式的布尔语义来支持条件分支。对于if (condition) {...}这样的语句,只有当条件判断为true时,才会执行花括号内的部分。循环依赖于条件来决定是继续迭代还是结束迭代:while (condition) {...}。如果没有条件分支,我们将无法编写出太有用的代码。设想一下在不能使用任何循环或条件语句时,如何实现一个非常简单的算法?例如从一个数字列表中找出第一个偶数。