4

JavaScript 比较运算符

 1 year ago
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.
neoserver,ios ssh client
JavaScript 比较运算符

JavaScript 比较运算符

在本教程中,您将学习如何使用 JavaScript 比较运算符来比较两个值。

JavaScript 比较运算符简介

要比较两个值,您可以使用比较运算符。下表显示了 JavaScript 的比较运算符:

Operator 意义
< 少于
> 大于
<= 小于或等于
>= 大于或等于
== 等于
!= 不等于

比较运算符返回一个布尔值,指示比较是否为真。请参阅以下示例:

let r1 = 20 > 10; // true
let r2 = 20 < 10; // false
let r3 = 10 == 10; // true
JavaScript-Comparison-Operators.webp

比较运算符采用两个值。如果值的类型不可比较,则比较运算符会根据特定规则将它们转换为可比较类型的值。

如果值是数字,则比较运算符执行数字比较。例如:

let a = 10, 
    b = 20; 

console.log(a >= b);  // false
console.log(a == 10); // true

这个例子很简单。变量 a10b20。表达式 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转换为1false转换为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 比较运算符来比较值。

微信公众号

支付宝打赏

myfreax 淘宝打赏

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK