js 中==和===

js是弱类型语言,==比较时会进行隐式转换。比如 1 == '1'是true,因为会把他们自动转化为数字进行处理。===不会进行类型转换,是绝对相等,一般用这个比较靠谱。
js中 === 最保险的比较时比较两个字符串是否相等,因为在某些情况下,其他类型的值都会转化为字符串进行存储。比如,取input的val值取出来的就是字符串,但是我们赋值的时候是数字。

奇怪的情况:
1、 0 == '0'; //true
2、 0 == !'0';//true
3、 !0 == '0'; //false
4、 0 == '000000'; //true
5、 0==false; //true
6、 '00' == '000'; //false
7、 0 == ''; //true
8、'0' == ''; //false
9、 Boolean('0'); //true
10、 Boolean(0); //false

分析:
1、隐式转换,把字符串'0'转为数字0,然后比较
2、隐式转换,把数字0转为布尔值false, !(非)会把字符串'0'转为false
3、数字0是false,!(非)会把数字0转为true,true 和字符串'0'不相等
4、隐式转换,把字符串'000000',转化为数字,即是0
5、0在和非数字且不能转为数字的值比较时,会自动转化为布尔值。即false
6、字符串比较,不相等
7、0 和 '' 都会隐式转换为false
8、字符串比较,不相等
(上面如果===,全都是false)

关于true和false的比较
'true' == true; //false
'false' == false //false
字符串不会进行隐式转换所以不相等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • JavaScript 中 == 和 === 的区别 和其他语言有些不同,在 JavaScript 中除了用==操作...
    融合xx阅读 9,360评论 0 4
  • 值类型转换将值从一种类型转换为另一种类型通常称为类型转换,这是显示的情况;隐式的情况称为强制类型转换。JavaSc...
    xpwei阅读 3,751评论 0 5
  • 9.正则表达式 首先,js定义了RegExp()构造函数,用来创建表示文本匹配模式的对象。这就是正则表达式。正则表...
    我就是z阅读 822评论 0 5
  • 没有什么事情能够重来 感情是,生活是 我也曾懊悔过去的种种不是 但我发现 除虚度了光阴追溯过去 并不能给我的现在带...
    傲娇兔子大人阅读 257评论 0 0
  • 山不在高,比云朵高 劈开灌木丛,行至山腰 刚听腹蛇窜动脚下草 是日午时,我不访故交 往平日见着的人字形山脊上远眺 ...
    诗人金子阅读 298评论 0 0

友情链接更多精彩内容