JavaScript 比较运算符
source link: https://www.myfreax.com/javascript-comparison-operators/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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 比较运算符来比较值。
微信公众号
支付宝打赏
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK