2.4 Boolean
布尔只有一个值,不是true就是false。
2.4.1 逻辑操作符
就像可以用算术操作符(+,-,*,/等)把数字组合起来一样,我们也可以用布尔操作符
把布尔值组合起来。当用布尔操作符组合布尔值时,结果总是另一个布尔值(true或false)。
JavaScript中的3个主要布尔操作符是&&,||,!。
&&表示“与”。使用&&操作符来判断两个布尔值是否都为真。
||表示“或”。使用该操作符可以判断两个布尔值中是否有一个为真。
!表示“非”。使用它把假转化成真,或者把真转换成假。这对于值的取反很有帮助。
组合逻辑操作符。当把逻辑操作符组合到一起时,它们会变得很有趣。
var isWeekend = false;
var hadShower = true;
var hasApple = false;
var hasOrange = true;
var shouldGoToSchool = !isWeekend && hadShower && (hasApple || hasOrange);
shouldGoToSchool;
true
在逻辑语句中,会先计算&&再计算||。
2.4.2 用Boolean比较数字
可以用布尔值回答一些答案为yes或no的简单的关于数字的问题。
可以使用大于符号(>=)来判断一个数字是否大于或等于另一个数字。
和大于操作符(>)相反的是小于操作符(<)。
也有<=的符号。
要搞清楚两个数字是否相等,使用三个等号(===)。
三个等号与一个等号的区别:三个等号表示问一个问题,“这两个数字相等吗?”,而一个等号表示把
一个值赋给变量。
当使用=时,变量名必须放在左边,想要保存到变量中的值必须放在右边。
而另一方面,===只是用来比较两个值是否相等,所以值放在哪一边都无所谓。
也可以使用三个等号比较两个字符串或者两个布尔类型。如果使用===比较两种不同的类型,例如,比较字符串和数字,总会返回false。
JavaScript也有两个等号的操作符,用来判断两个值是否相等,即使一个值是字符串,另一个值是数字,也可以比较。
所有值都有类型。所以数值5和字符串“5”是不同的,即使它们看上去是一样。如果使用三个等号来比较数值5和字符串“5”,JavaScript
会告诉我们,它们是不相等的。但是,如果使用==来比较这两个值,JavaScript会告诉我们,它们是相等的。
var stringNumber = “5”;
var actualNumber = 5;
stringNumber === actualNumber;
false
stringNumber == actualNumber;
true
JavaScript用两个等号比较两个数字时,首先会尝试把这两个值当作相同的类型。
这种情况下,它把布尔值转换成一个数字。如果把布尔值转换成数字,false就变成了0,true变成了1。
所以当输入0==false时,你会得到true。
因为这个怪异的原因,所以目前请坚持使用===。
2.5 undefined和null
最后还有不属于任何特殊情况的两个值。它们是undefined和null。用它们来表示“没有”,但是,它们之间略有不同。
undefined表示没有值。
如果你想要把一个变量设置为“没有”,应该使用null。
只有当你确实想要表示这里没有什么内容时,才会使用null,这一用法偶尔也是很有帮助的。
2.6 小结
现在,我们已经知道JavaScript中所有的数据类型了——数字类型,字符串类型,布尔类型,还有特殊值undefined和null。
数字类型用于处理与数学相关的事情,字符串类型用于处理文本,布尔类型用于表示答案为yes或no的问题。undefined和null是表示某些东西不存在的一种方法。