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