摘要:在本教程中,您将学习如何使用 JavaScript 比较运算符比较两个值。
JavaScript 比较运算符简介
要比较两个值,您需要使用比较运算符。下表显示了 JavaScript 中的比较运算符
运算符 | 意义 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
== | 等于 |
!= | 不等于 |
比较运算符返回一个 布尔 值,指示比较是否为真。请看下面的示例
let r1 = 20 > 10; // true
let r2 = 20 < 10; // false
let r3 = 10 == 10; // true
Code language: JavaScript (javascript)

比较运算符接受两个值。如果值的类型不可比较,则比较运算符会根据特定规则将它们转换为可比较类型的值。
比较数字
如果值为数字,比较运算符将执行数值比较。例如
let a = 10,
b = 20;
console.log(a >= b); // false
console.log(a == 10); // true
Code language: JavaScript (javascript)
此示例很简单。变量 a
为 10
,b
为 20
。表达式 a >= b
表达式返回 false
,表达式 a == 10
表达式返回 true
。
比较字符串
如果操作数为字符串,JavaScript 将按字符串中字符的字符代码逐个进行数值比较。
let name1 = 'alice',
name2 = 'bob';
let result = name1 < name2;
console.log(result); // true
console.log(name1 == 'alice'); // true
Code language: JavaScript (javascript)
由于 JavaScript 按字符串中字符的字符代码进行数值比较,您可能会得到意外的结果,例如
let f1 = 'apple',
f2 = 'Banana';
let result = f2 < f1;
console.log(result); // true
Code language: JavaScript (javascript)
在此示例中,f2
小于 f1
,因为字母 B
的字符代码为 66
,而字母 a
的字符代码为 97
。
要解决此问题,您需要
- 首先,将字符串转换为通用格式,即小写或大写
- 其次,比较转换后的值
例如
let f1 = 'apple',
f2 = 'Banana';
let result = f2.toLowerCase() < f1.toLowerCase();
console.log(result); // false
Code language: JavaScript (javascript)
请注意,toLowerCase()
是 String 对象的方法,用于将字符串转换为小写。
比较数字与其他类型的数值
如果一个值为数字,而另一个值不是,则比较运算符将把非数字值转换为数字,并进行数值比较。例如
console.log(10 < '20'); // true
Code language: JavaScript (javascript)
在此示例中,比较运算符将字符串 '20'
转换为数字 20
,并与数字 10 进行比较。下面是一个示例
console.log(10 == '10'); // true
Code language: JavaScript (javascript)
在此示例中,比较运算符将字符串 '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
Code language: JavaScript (javascript)
在第一个比较中,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
Code language: JavaScript (javascript)
除了上述规则之外,等于 (==
) 和不等于 (!=
) 运算符还有以下规则。
比较 null 和 undefined
在 JavaScript 中,null
等于 undefined
。这意味着以下表达式返回 true
。
console.log(null == undefined); // true
Code language: JavaScript (javascript)
比较 NaN 与其他值
如果任一值为 NaN
,则等于运算符 (==
) 返回 false
。
console.log(NaN == 1); // false
Code language: JavaScript (javascript)
即使
console.log(NaN == NaN); // false
Code language: JavaScript (javascript)
不等于 (!=
) 运算符在比较 NaN
与另一个值时返回 true
console.log(NaN != 1); // true
Code language: JavaScript (javascript)
以及
console.log(NaN != NaN); // true
Code language: JavaScript (javascript)
严格等于 (===) 和不严格等于 (!==)
除了上面的比较运算符之外,JavaScript 还提供严格等于 ( ===
) 和不严格等于 ( !==
) 运算符。
运算符 | 意义 |
---|---|
=== | 严格等于 |
!== | 不严格等于 |
严格等于和不严格等于运算符的行为与等于和不等于运算符类似,不同之处在于它们在比较之前不会转换操作数。请看下面的示例
console.log("10" == 10); // true
console.log("10" === 10); // false
Code language: JavaScript (javascript)
在第一个比较中,由于我们使用的是相等运算符,JavaScript 将字符串转换为数字,并执行比较。
但是,在第二个比较中,我们使用的是严格相等运算符 ( ===
),JavaScript 在比较之前不会转换字符串,因此结果为 false
。
在本教程中,您已经学习了如何使用 JavaScript 比较运算符比较值。