❝作为前端初学者,学到比较运算符感觉里面的细节还是比较多的,也不晓得项目开发中用的是否多,但是大致看了一些面试题,发现面试中考比较运算符频率还是比较高的,作为WEB萌新来整理一下自己所学,希望大佬们指正。
❞
比较运算符基础
比较运算符有哪些呢?
- 大小比较: > < >= <=
- 相等比较: == != === !==
比较运算符返回类型
「比较运算符返回类型是:Boolean类型」

比较运算符优先级
「算术运算符的优先级高于比较运算符」
var x = 1 + 2 > 4 * 5; // 先计算出来值,在进行比较
console.log(x); // false
比较运算符大小比较
细节
- 比较运算符俩侧都是字符串,那么比较的是字符编码(ASCII)
ASCII码可以直接百度一下,会有对应的ASCII码表,大家可以自行看一下,如果遇到俩侧都是字符串那么久可以用了。
console.log("1" > "2"); // fasle "1"转化为编码为49,"2"转化后为50
console.log('AB' > 'AC'); // false
console.log("11" > "1"); // true
console.log("2" > "11"); // true
// 如果是俩位比较的话先比较第一个字符,如果第一个字符能比较出来大小那么结果就出来了,如果相等那么第二位开始进行比较。
- 如果一个不是字符串,并且俩个都是原始类型,那么都转化为数字进行比较
console.log("123" > true); // true
console.log(null > true); //flase
NaN和任何任何数字比较得到的结果都是false
console.log(true > undefined); // false
Infinity比任何数字都大
console.log(Infinity > 99999); // true;
-Inifinity比任何数字都小
console.log(-Infinity < -99999999) // true
- 如果其中一个是对象,那么先把对象转化为原始类型,在根据规则1或规则2进行比较
目前,对象转换为原始类型后,是字符串 "[object Object]"
console.log(3 > {}); // false
比较运算符相等比较
== 和 != (相等比较和不相等比较)
==: 比较两个数据是否相等 !=: 比较两个数据是否不相等
「细节」
- 两端的类型相同,直接比较两个数据本身是否相同(两个对象比较的地址)
console.log(1 == 1); // true
console.log("1" == "2"); // false
console.log({} == {}) // false 对象比较的是地址
- 两端的类型不同
1). null 和 undefined, 它们之间相等, 和其他原始类型比较, 则不相等。 2). 其他原始类型,比较时先转换为数字,再进行比较 3). NaN与任何数字比较,都是false,包括自身 4). Infinity和-Infinity,只能和自身相等 5). 对象比较时,要先转换为原始类型后,再进行比较
「由于相等和不相等比较,对于不同类型的数据比较违反直觉,因此,通常我们不适用这种比较方式,而是使用更加接近直觉的严格相等和严格不相等比较」
=== 和 !== (严格相等 和 严格不相等)
=== : 两端的数据和类型必须相同 !== : 两端的数据或类型不相同
- 两端类型相同,规则和相等比较一致。
- 两端类型不同,为false。
数字规则:
1). NaN与任何数字比较,都是false,包括自身 2). Infinity和-Infinity,只能和自身相等
最后
❝对于比较运算符我了解的差不多也就这么多了,本博客有任何错误希望大家指正和补充,嗯,自己学习整理这篇内容用了差不多一天时间,码字不易,望点赞,如有错误,望指出,谢谢支持。 如果也有刚接触前端的小伙伴也欢迎加我微信(wangjianghua888666)共同学习,讨论,进步。
❞
本文使用 mdnice 排版