英文 | https://www.javascripttutorial.net/
译文 | 杨小爱
在上节中,我们学习了JavaScript 赋值运算符,错过的小伙伴可以点击文章《【JavaScript 教程】第三章运算符02— JavaScript 赋值运算符
那么,在今天的教程中,我们将一起来学习如何使用JavaScript 比较运算符,以将其右操作数的值分配给其左操作数。
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 比较运算符来比较值。
学习更多技能
请点击下方公众号