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); // trueNaN 与 其他值比较
如果任一值为 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 比较运算符来比较值。