当前位置: 首页 > news >正文

宽松相等(==) 的转换规则(仅考虑基本数据类型)

在js中,比较两个变量是否相等常见的方法有两种,一个是宽松相等“==”,另一个是严格相等"==="。

这两个的区别在于:

        宽松相等:仅比较值是否相等,并且会进行一定的类型隐式转换,将两侧转换为相同类型后再比较。

        严格相等:比较值和地址是否都相等,不会进行类型转换。

而在使用宽松相等时,类型的转换却有些难以把握。比如:

console.log(1=='1')//true

console.log(1=='a')//false

console.log(true=='true')//false

console.log(false=="")//true

我们都知道,空字符串、false、0、undefined、null转换为布尔类型都是false,其他转成布尔类型都是true。但是从上面几个例子中可以看到,好像并不是这么回事,比如true==’true‘,按照转换规则来说应该是true,但是打印出的确实false。下面就是一些通过学习、查询和测试得到的一些规则。

规律总结:

1.当类型相同时,值相同则为true,不同则为false,Symbol类型除外,Symbol类型比较都会输出false,因为Symbol表示的每个都是唯一值

2.当类型不同时:

2.1.如果布尔类型和字符串或数字相比,true会被转换成1,false会被转换为0;字符串会尝试转换为数字,不能转换则为NaN,然后比较转换后的数字。

console.log(true=='1')//true
console.log(true=='2')//false
console.log(true=='0')//false
console.log(true=='')//false
console.log(false=='')//true
console.log(false=='0')//true
console.log(false=='1')//false
console.log(true==0)//false
console.log(true==1)//true
console.log(false==0)//true
console.log(false==1)//false

2.2.如果比较双方一个是数字,一个是字符串,那么会尝试将字符串转换为数字,如果不能转换为数字则会转换为NaN,然后比较转换后的数字

console.log(1=='1')//true
console.log(1=='2')//false
console.log(1=='0')//false
console.log(1=='a')//false
console.log(0=='0')//true
console.log(0=='1')//false
console.log(0=='2')//false
console.log(0=='a')//false
console.log(2=='0')//false
console.log(2=='1')//false
console.log(2=='2')//true
console.log(2=='a')//false

2.3.null、undefined和Symbol:null与undefined比较为true(js中一个特殊规则),null、undefined、Symbol与其他类型比较均为false。

相关文章:

  • Jouier 普及组十连测 R4
  • Python入门手册:Python基础语法
  • Python邮件处理:POP与SMTP
  • C++构造和折构函数详解,超详细!
  • YOLO11解决方案之速度估算探索
  • 第R7周:糖尿病预测模型优化探索
  • 【Python打卡Day30】模块与包的导入@浙大疏锦行
  • 《P1470 [USACO2.3] 最长前缀 Longest Prefix》
  • Python打卡5.23(day24)
  • Jouier 普及组十连测 R3
  • Claude 4 发布:编码 AI 新纪元的开启
  • 文章记单词 | 第111篇(六级)
  • 文章记单词 | 第114篇(六级)
  • 生成模型——变分自动编码器(Variational Autoencoders, VAEs)
  • 国家网络身份认证公共服务管理办法
  • LEED认证是什么?LEED认证难吗?LEED认证需要准备的资料
  • Android内存调优学习总结(OOM与ANR)
  • 【Qt开发】显示类控件——QLCDNumber
  • VRRP虚拟路由器协议的基本概述
  • 有两个Python脚本都在虚拟环境下运行,怎么打包成一个系统服务,按照顺序启动?
  • 做个人网站要多少钱/网络安全有名的培训学校
  • 郑州网站建设维护公司/关键词优化系统
  • cms网站搭建好了再怎么做/线上广告推广平台
  • 做网站模板用什么框架/手机自动排名次的软件
  • 中小型网站建设与管理设计总结/网站排名优化怎么做
  • 微博网站开发/长沙全网覆盖的网络推广