JavaScript 比较运算符
在本教程中,您将学习如何使用 JavaScript 比较运算符来比较两个值
在本教程中,您将学习如何使用 JavaScript 比较运算符来比较两个值。
JavaScript 比较运算符简介
要比较两个值,您可以使用比较运算符。下表显示了 JavaScript 的比较运算符:
Operator | 意义 |
---|---|
< | 少于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
== | 等于 |
!= | 不等于 |
比较运算符返回一个布尔值,指示比较是否为真。请参阅以下示例:
let r1 = 20 > 10; // true
let r2 = 20 < 10; // false
let r3 = 10 == 10; // true
比较运算符采用两个值。如果值的类型不可比较,则比较运算符会根据特定规则将它们转换为可比较类型的值。
比较数字
如果值是数字,则比较运算符执行数字比较。例如:
let a = 10,
b = 20;
console.log(a >= b); // false
console.log(a == 10); // true
这个例子很简单。变量 a
是 10
,b
是 20
。表达式 a >= b
返回 false
,表达式 a == 10
表达式返回 true
。
比较字符串
如果比较的值是字符串,JavaScript 将字符串的字符 ASCII 值逐一进行数字比较。
let name1 = 'alice',
name2 = 'bob';
let result = name1 < name2;
console.log(result); // true
console.log(name1 == 'alice'); // true
因为 JavaScript 以 字符的 ASCII 数字方式比较字符串,您可能会收到意想不到的结果,例如:
let f1 = 'apple',
f2 = 'Banana';
let result = f2 < f1;
console.log(result); // true
在这个例子中,f2
小于是 f1
因为字母 B
字符 ASCII 值是 66
而字母 a
字符ASCII 值是 97
。
要解决此问题,您需要:
- 首先,将字符串转换为通用格式,小写或大写
- 然后、比较转换后的值
例如:
let f1 = 'apple',
f2 = 'Banana';
let result = f2.toLowerCase() < f1.toLowerCase();
console.log(result); // false
请注意,String 对象的 toLowerCase()
方法将字符串转换为小写。
将数字与另一种类型的值进行比较
如果一个值是数字而另一个不是,比较运算符会将非数字值转换为数字并进行数字比较。例如:
console.log(10 < '20'); // true
在此示例中,比较运算符将字符串 '20'
转换为数字 20
并与数字 10 进行比较。这是一个示例:
console.log(10 == '10'); // true
在此示例中,比较运算符将字符串 '10'
转换为数字 10
并进行数值比较。
将对象与非对象进行比较
如果一个值是一个对象, 则调用对象的 valueOf()
方法返回值进行比较。如果对象没有 valueOf()
方法,则调用对象的 toString()
方法。例如:
let apple = {
valueOf: function () {
return 10;
},
};
let orange = {
toString: function () {
return '20';
},
};
console.log(apple > 10); // false
console.log(orange == 20); // true
在第一次比较中,apple
对象具有 valueOf()
方法返回 10
。因此,比较运算符使用数字 10 进行比较。
在第二次比较中,JavaScript 首先调用 valueOf()
方法。但是,orange
对象没有valueOf()
方法。于是 JavaScript 调用对象的 toString()
方法获取的返回值 20
进行比较。
将布尔值与另一个值进行比较
如果一个值是布尔值,JavaScript 会将其转换为数字并将转换后的值与另一个值进行比较;true
转换为1
,false
转换为0
。 例如:
console.log(true > 0); // true
console.log(false < 1); // true
console.log(true > false); // true
console.log(false > true); // false
console.log(true >= true); // true
console.log(true <= true); // true
console.log(false <= false); // true
console.log(false >= false); // true
除上述规则外,等于 ==
和不等于!=
运算符还有以下规则。
比较 null 和 undefined
在 JavaScript 中,null
等于 undefined
。这意味着下面的表达式返回true
.
console.log(null == undefined); // true
NaN 与 其他值比较
如果任一值为 NaN
,则运算符 ==
返回 false
。
console.log(NaN == 1); // false
甚至 NaN == NaN
也是返回 false
。
console.log(NaN == NaN); // false
当 NaN
与另一个值比较时,不等于 !=
运算符返回 true
console.log(NaN != 1); // true
并且 NaN != NaN
。
console.log(NaN != NaN); // true
严格等于 === 和不严格等于 !==
除了上面的比较运算符,JavaScript 还提供了严格等于 ===
和非严格等于 !==
运算符。
Operator | 意义 |
---|---|
=== | 严格相等 |
!== | 不严格相等 |
严格等于和不严格等于运算符的行为类似于等于和不等于运算符,只是它们在比较之前不转换值。请参阅以下示例:
console.log("10" == 10); // true
console.log("10" === 10); // false
在第一次比较中,由于我们使用了相等运算符,JavaScript 将字符串转换为数字并执行比较。
但是,在第二次比较中,我们使用了严格的等于运算符 ===
,JavaScript 在比较之前不会对字符串进行转换,因此结果是 false
。
结论
在本教程中,您学习了如何使用 JavaScript 比较运算符来比较值。