首页 > Web开发 > 详细

JS中 关于'==' 与 '==='的分析,以及对应的隐式转换

时间:2021-04-07 20:48:19      阅读:24      评论:0      收藏:0      [点我收藏+]

一、场景分析

1. 两边数据类型相同的时候,这种情况 == 和 === 结果是一样的,如

‘a‘ == ‘b‘ //false  ,当两边都是字符串的时候比较两边的ASCII码,可以通过str.charCodeAt(index)获取

[] == [] // false,这种情况不会调用valueOf方法,因此直接比较复杂数据类型内存地址是否一致,这是两个不同的数组,因此false,{}同理

2. 两边数据类型不相同的时候,如

2.1 ‘==‘的时候

‘a‘ == true // true,  ‘a‘转化成数值1,true转化成数值1

[] == true// false, []先调用valueOf方法,将[]转化成‘‘空字符串,然后空字符串再转化成数值0,true转化成数值1

2.1 ‘===‘的时候

‘a‘ === true //false,全等先比较数据类型知否一致,然后再按上面的比较

二、总结

1.当 == 号,且两边数据类型都不一致的时候,对象数据类型会先调用valueOf和toString方法先转化成字符串,字符串再转化成数值类型,字符串和布尔值都是直接转化成数值然后比较

2.当 === 号的时候先比较数据类型是否一致,然后再按照上面的比较方法比较

3.数据转化顺序: 对象 -> 字符串 -> 数值,布尔值 -> 数值

JS中 关于'==' 与 '==='的分析,以及对应的隐式转换

原文:https://www.cnblogs.com/dutudu/p/14628572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!