布尔类型
在 JavaScript 中,有很多 相互比较的操作。 所有这些操作符都返回一个 true 或 false 值。
最基本的运算符是相等运算符:==。 相等运算符比较两个值,如果它们是相等,返回 true,如果它们不相等,返回 false。 值得注意的是相等运算符不同于赋值运算符(=),赋值运算符是把等号右边的值赋给左边的变量。
function equalityTest(myVal) {
if (myVal == 10) {
return "Equal";
}
return "Not Equal";
}
如果 myVal 等于 10,相等运算符会返回 true,因此大括号里面的代码会被执行,函数将返回 Equal。 否则,函数返回 Not Equal。 在 JavaScript 中,为了让两个不同的数据类型(例如 numbers 和 strings)的值可以作比较,它必须把一种类型转换为另一种类型。 这叫作 “类型强制转换”。 转换之后,可以像下面这样来比较:
1 == 1 // true
1 == 2 // false
1 == '1' // true
"3" == 3 // true
严格相等运算符
严格相等运算符(===)
是相对相等操作符(==)
的另一种比较操作符。 与相等操作符转换数据两类型不同,严格相等运算符不会做类型转换。
如果比较的值类型不同,那么在严格相等运算符比较下它们是不相等的,会返回 false 。
示例
3 === 3 // true
3 === '3' // false
在第二个例子中,3 是一个 Number 类型,而 ‘3’ 是一个 String 类型。
比较不同值
在上两个挑战中,我们学习了相等运算符 () 和严格相等运算符 (=)。 现在让我们快速回顾并实践一下。
如果要比较的值不是同一类型,相等运算符会先执行数据类型转换,然后比较值。 而严格相等运算符只比较值,不会进行数据类型转换。
示例
3 == ‘3’ 返回 true ,因为 JavaScript 执行了从字符串到数字类型的转换。 3 === ‘3’ 返回 false,因为类型不同且类型转换没有执行。
提示 在 JavaScript 中,你可以使用 typeof 运算符确定变量或值的类型,如下所示:
typeof 3
typeof '3'
typeof 3
返回字符串 number
,typeof '3'
返回字符串 string
。
不等运算符
不相等运算符(!=)与相等运算符是相反的。 这意味着不相等并返回 false 的地方,用相等运算符会返回 true,反之亦然。 与相等运算符类似,不相等运算符在比较的时候也会转换值的数据类型。
例如
1 != 2 // true
1 != "1" // false
1 != '1' // false
1 != true // false
0 != false // false
严格不等运算符
严格不相等运算符(!==)与全等运算符是相反的。 这意味着严格不相等并返回 false 的地方,用严格相等运算符会返回 true,反之亦然。 严格不相等运算符不会转换值的数据类型。
示例
3 !== 3 // false
3 !== '3' // true
4 !== 3 // true
大于运算符
使用大于运算符(>)来比较两个数字。 如果大于运算符左边的数字大于右边的数字,将会返回 true
。 否则,它返回 false
。
与相等运算符一样,大于运算符在比较的时候,会转换值的数据类型。
5 > 3 // true
7 > '3' // true
2 > 3 // false
'1' > 9 // false
大于或等于运算符
使用大于等于运算符(>=)来比较两个数字的大小。 如果大于等于运算符左边的数字比右边的数字大或者相等,会返回 true。 否则,会返回 false。
与相等运算符相似,大于等于运算符在比较的时候会转换值的数据类型。
例如:
6 >= 6 // true
7 >= '3' // true
2 >= 3 // false
'7' >= 9 // false
小于运算符
使用小于运算符(<)来比较两个数字。 如果小于运算符左边的数字比右边的数字小,它会返回 true。 否则会返回 false。 与相等运算符类似,小于运算符在做比较的时候会转换值的数据类型。
例如:
2 < 5 // true
'3' < 7 // true
5 < 5 // false
3 < 2 // false
'8' < 4 // false
小于或等于运算符
使用小于等于运算符(<=)比较两个数字的大小。 如果在小于等于运算符左边的数字小于或者等于右边的数字,它会返回 true。 如果在小于等于运算符左边的数字大于右边的数字,它会返回 false。 与相等运算符类似,小于或等于运算符会转换数据类型。
例如
4 <= 5 // true
'7' <= 7 // true
5 <= 5 // true
3 <= 2 // false
'8' <= 4 // false
逻辑与运算符
有时你需要在一次判断中做多个操作。 当且仅当运算符的左边和右边都是 true,逻辑与运算符(&&)才会返回 true。
同样的效果可以通过 if 语句的嵌套来实现:
if (num > 5) {
if (num < 10) {
return "Yes";
}
}
return "No";
只有当 num 的值大于 5 并且小于10 时才会返回 Yes。 相同的逻辑可被写为:
if (num > 5 && num < 10) {
return "Yes";
}
return "No";
逻辑或运算符
只要逻辑或运算符(||)两边的任何一个运算的结果是 true,则返回 true。 否则,返回 false。
逻辑或运算符由两个竖线(||)组成。 这个按键位于退格键和回车键之间。
下面这样的语句你应该很熟悉:
if (num > 10) {
return "No";
}
if (num < 5) {
return "No";
}
return "Yes";
只有当 num 大于等于 5 或小于等于 10 时,函数才返回 Yes。 相同的逻辑可以简写成:
if (num > 10 || num < 5) {
return "No";
}
return "Yes";