点此查看所有教程、项目、源码导航
文章目录
- 1. 什么是比较
- 2. 比较运算符
- 3. 比较运算符的运算结果
- 4. 宽松相等与严格相等区别
- 5. 使用变量存储比较运算结果
- 6. 小结
1. 什么是比较
在 JS 程序中,有时候需要对两个变量或者常量进行比较,比如判断两个数值的大小。
此时就需要用到JS里面的比较运算符。
2. 比较运算符
常用的比较运算符有 8 种:大于、小于、大于等于、小于等于、宽松等于、严格等于、宽松不等于、严格不等于,对应的 JS 操作符如下:
1>2;// 大于1<2;// 小于1>=2;// 大于等于1<=2;// 小于等于1==2;// 宽松相等1===2;// 严格相等1!=2;// 宽松不相等1!==2;// 严格不相等注意,跟数学符号还是有所不同的,尤其是 JS 中
=表示赋值,而==、===才是用来判断是否相等。
3. 比较运算符的运算结果
之前讲过算术操作符,其运算结果是数值。
那么比较运算符,运算结果是什么呢,例如1>2,其运算结果是什么?
其实关系运算,就是一种判断,1>2的判断结果,要么是正确、要么是错误。
之前我们正好学过一种数据类型,表达真假两个方面含义,就是布尔类型,布尔类型只有两个值 true、false,正好可以对应关系运算的结果。
在 JS 语言中,比较运算的结果是布尔类型,当判断成立时,比较运算结果为 true;当判断不成立时,比较运算的结果为 false。
所以我们看下上面运算的结果:
console.log(1>2);// falseconsole.log(1<2);// trueconsole.log(1>=2);// falseconsole.log(1<=2);// trueconsole.log(1==2);// falseconsole.log(1===2);// falseconsole.log(1!=2);// trueconsole.log(1!==2);// true4. 宽松相等与严格相等区别
这是本节的重点,很多新手在这里容易踩坑。==宽松相等:只对比两边的值,比较之前会自动做隐式类型转换,类型不一样也有可能相等。===严格相等:先对比类型,再对比值,类型不一样直接返回 false,不会自动转换类型。
示例代码:
console.log(10=='10');// true,会把字符串'10'转成数字10再对比console.log(10==='10');// false,一个是number,一个是string,类型不同对应的不等于同理:
!=:宽松不等,会触发隐式转换!==:严格不等,不做类型转换,类型不同直接判定不等
开发推荐:优先使用 === 和!==,避免隐式转换带来意料之外的 bug。
5. 使用变量存储比较运算结果
既然比较运算的结果是布尔类型的 true 或 false 值,那么该值自然可以用变量存储。如下:
varresult=1>2;console.log(result);//输出false这行代码先执行右侧,1>2不成立,所以运算结果是 false。
然后将 false 赋值给 result,所以 result 存储的就是布尔类型的 false。
6. 小结
有一些语言,关系运算的结果是用数字表示的,例如 C 语言。
但是更多的语言,选择使用布尔类型存储关系运算结果,这样更合理。因为使用数字可能会有歧义,你看到数字不一定能马上明确这是一个数学数字还是一个判断结果。而布尔类型是单独定义的类型,有单独的值 true、false,所以它肯定不会跟数字混淆,一看就知道是判断结果。
另外重点记住宽松相等和严格相等的差异:
==、!=宽松比较,会自动隐式转换类型;===、!==严格比较,类型和值必须全部一致才成立;- 实际项目开发,优先选择严格相等。