布尔类型

在 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 返回字符串 numbertypeof '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";