【JavaScript 教程】第三章运算符03— JavaScript 比较运算符

JavaScript教程2年前 (2023)发布 admin
2,890 0

在上节中,我们学习了JavaScript 赋值运算符,错过的小伙伴可以点击文章《【JavaScript 教程】第三章运算符02— JavaScript 赋值运算符》进行学习。

那么,在今天的教程中,我们将一起来学习如何使用JavaScript 比较运算符,以将其右操作数的值分配给其左操作数。

JavaScript 赋值运算符简介

赋值运算符将右操作数的值赋给其左操作数。这是基本的赋值运算符:

【JavaScript 教程】第三章运算符03— JavaScript 比较运算符

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

let r1 = 20 > 10; // true
let r2 = 20 < 10; // false
let r3 = 10 == 10; // true

比较运算符至少采用两个值(或操作数)。如果两个值之一具有不同的类型,JavaScript 将在比较它们之前根据特定规则执行转换。我们将在以下部分详细讨论每个规则。

比较数字

如果操作数是数字,JavaScript 将执行数字比较。例如:

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

这个例子很简单。变量a是10,b是20。a>=b 表达回报,a==10 ,则为true。

比较字符串

如果操作数是字符串,JavaScript 将字符串中的字符代码一一进行数字比较。

let name1 = ‘alice’,
name2 = ‘bob’;
let result = name1 < name2;
console.log(result); // true
console.log(name1 == ‘alice’); // true

由于 JavaScript 以数字方式比较字符串中的字符代码,因此,您可能会收到意想不到的结果,例如:

let f1 = ‘apple’,
f2 = ‘Banana’;
let result = f2 < f1;
console.log(result); // true

在本例中,f2小于f1,因为字母B具有字符代码字节为66,而字母a的字符代码字节为97。

要解决此问题,您必须首先将字符串转换为通用格式,无论是小写还是大写,然后执行如下比较:

let result2 = f2.toLowerCase() < f1.toLowerCase();
console.log(result2); // false

请注意,toLowerCase()是 String 对象的一种方法,可将字符串本身转换为小写。

将数字与另一种类型的值进行比较

如果一个操作数是数字而不是另一个,JavaScript 会将非数字操作数转换为数字并进行数字比较。

console.log(10 < ’20’); // true

在这个例子中,字符串’20’被转换为20,数字 10 并与数字 10 进行比较。这是一个例子:

console.log(10 == ’10’); // true

在这个例子中,JavaScript中的字符串转换’10’ 为数字10,并将结果与比较的次数10 ,结果为true。

比较对象与非对象

如果操作数是一个对象,JavaScript 会调用该对象的 valueOf()方法来获取比较值。如果对象没有该valueOf()方法,则 JavaScript 会调用该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,因此,JavaScript 使用 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

除上述规则外,equal( ==) 和 not-equal( !=) 运算符还具有以下规则。

比较null和undefined

在 JavaScript 中,null等于undefined, 这意味着以下表达式返回true。

console.log(null == undefined); // true

NaN与其他值的比较

如果任一操作数是NaN,则相等的 operator( ==) 返回false。

console.log(NaN == 1); // false

甚至

console.log(NaN == NaN); // false

不等于 ( !=) 运算符true在NaN与另一个值比较时返回:

console.log(NaN != 1); // true

并且

console.log(NaN != NaN); // true

严格等于 ( ===) 和不严格等于 ( !==)

除了上面的比较运算符,JavaScript 还提供了严格等于 ( ===) 和非严格等于 ( !==) 运算符。

运算符 意义
=== 严格相等
!== 不严格等于

严格等于和不严格等于运算符的行为类似于等于和不等于运算符,只是它们在比较之前不转换操作数。请参阅以下示例:

console.log(“10” == 10); // true
console.log(“10” === 10); // false

在第一次比较中,由于我们使用了相等运算符,JavaScript 将字符串转换为数字并执行比较。

但是,在第二次比较中,我们使用了严格相等运算符 ( ===),JavaScript 不会在比较之前转换字符串,因此结果是false。

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

© 版权声明

相关文章

暂无评论

暂无评论...