JavaScript 比较运算符

 

比较运算符用于比较两个表达式的结果。如变量 num 加上变量 offset 是否大于0,大于就是一个比较运算符。

 

比较运算符还分为相等运算符与关系运算符。

 

相等运算符:

 

== 相等

!= 不相等

=== 严格相等

!== 严格不相等

关系运算符:

 

> 大于

>= 大于等于

< 小于

<= 小于等于

运算符返回的都是布尔值。

 

运算符左右的值也被称为操作数。

 

1. 相等运算符

相等运算符用于判断运算符左右两边的值是否一致。

 

很多资料也会把相等称为等于,严格相等被称作严格等于。

 

1.1 相等

相等运算符在进行比较的时候,如果两边操作数数据类型不同,则会尝试转换成相同的类型再进行比较,如果转换成相同类型后的值相同,则返回 true,否则返回 false。

 

如果比较的两个操作数是引用类型,则会比较内部的引用(是否引用同一个内存地址上的值)。

 

'3' == 3; // true

3 == '3'; // true

 

2 == 1; // false

 

3 + 2 == 5; // true

 

var obj1 = {a: 1};

obj1 == {a: 1}; //false

 

var obj2 = obj1;

obj1 == obj2; // true

 

undefined == null; // true

 

1 == true; // true

0 == false; // true

代码块

预览

复制

因为内容比较简单,推荐直接在控制台调试,可以快速看到结果。

 

具体的转化规则可以查阅隐式转换章节。

 

注意:相等会对不同类型的比较数据进行隐式转换,为了防止误导阅读代码的开发者对转换进行猜测,以及避免一些不可控的问题,大部分开发者会选择不使用相等。

 

1.2 不相等

不相等的比较机制和相等一致,类型相同直接比较,不相同的会尝试转换成相同类型,碰到引用类型则比较引用地址是否一致。区别就在于最后返回的结果与相等相反,比较结果如果不一致,则返回 true,一致则返回 false。

 

1 != 1; // false

1 != 2; // true

 

var obj1 = {a: 1};

obj1 != {a: 1}; // true

代码块

预览

复制

1.3 严格相等

严格相等在比较的时候,碰到两边的操作数类型不同,则会直接返回 false,不会进行类型的转换。

 

当类型一样时,则比较等号两边的值是否相等,相等则返回 true,否则返回 false。

 

1 === '1'; // false;

 

0 === false; // false

代码块

预览

复制

严格相等更加严格,程序中使用严格相等可以避免许多不可控的类型转换,特别是当开发者不熟悉转换规则时候,应尽可能使用严格相等。

 

1.4 严格不相等

严格不相等在比较的时候,如果两边的操作数不相等则返回 true,否则返回 false。其和严格相等一样,不会进行类型转换。

 

1 !== 1; // false

1 !== 2; // true

 

1 !== '1'; // true

undefined !== null; // true

代码块

预览

复制

注意:在做不相等运算的时候,也应该尽可能选择严格不相等,原因与建议使用严格相等一致。

 

2. 关系运算符

2.1 大于

大于运算符会在左操作数大于右操作数的时候返回 true,否则返回 false。

 

1 > 2; // false

2 > 2; // false

2 > 1; // true

代码块

预览

复制

2.2 大于等于

大于运算符会在左操作数大于等于右操作数的时候返回 true,否则返回 false。

 

1 >= 2; // false

3 >= 2; // true

2 >= 2; // true

代码块

预览

复制

2.3 小于

小于运算符会在左操作数小于右操作数的时候返回 true,否则返回 false。

 

1 < 2; // true

2 < 2; // false

3 < 2; // false

代码块

预览

复制

2.4 小于等于

小于等于运算符会在左操作数小于等于右操作数的时候返回 true,否则返回 false。

 

1 <= 2; // true

2 <= 2; // true

3 <= 2; // false

代码块

预览

复制

3. 注意点

3.1 字符串进行比较

假如比较运算符的两侧操作数都为字符串,则碰到中文,会将中文转化成对应的 Unicode 码,碰到英文则转化成对应的 ASCII 码,再对码值进行比较。

 

'a' > 'z'; // false

代码块

预览

复制

a 的 ASCII 码为 97,z 的 ASCII 码为 122,两者在比较的时候相当于是 97 > 122,结果就是 false。

 

如果碰到有多个字符,则会依次进行比较。

 

'aaaaaz' > 'aaaaaaaaa'; // true

代码块

预览

复制

两个操作数前五位都是 a,所以第六位才能决定出结果。

 

4. 小结

比较运算符主要用于比较两个值的大小关系,特别需要注意的是严格相等与相等的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值