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

b5f7bc3682a5a5817e8069315e892cbd.png

英文 | https://www.javascripttutorial.net/

译文 | 杨小爱

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

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

JavaScript 赋值运算符简介

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

33b749bd1159a274cbf98218b4fb365f.png

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

 
 
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 比较运算符来比较值。

学习更多技能

请点击下方公众号

42c9fb827b145046f49b62c28d96c463.gif

a64f0a2d422dce2423d0aabd2ec4a0b1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值