两个等号不是只比较值吗?为什么前面两个是false,最后一个是true?

两个等号不是只比较值吗?为什么前面两个是false,最后一个是true?

           console.log('undefined'==undefined );

            console.log('false'==false );

            console.log('55'==55);


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,不是全部的隐式转化都是转化成数值类型,还是看两个操作数的类型。如下:

  • number类型与string类型比较,string会转换为number类型

  • null和undefined类型比较始终相等

  • 布尔类型与其它任何类型进行比较,布尔类型将会转换为number类型

  • number类型或string类型与object类型进行比较,number或者string类型都会转换为object类型

  • 除此之外的两种类型比较不相等

'undefined'==undefined这两个比较就属于最后一种,始终不相等,不需要隐式转化。

祝学习愉快!

好帮手慕星星 2020-01-14 09:50:25

同学你好,两个等号是只比较值的。但是比较的时候会进行隐式转化,字符串55转化成数值类型为55:

http://img1.sycdn.imooc.com//climg/5e1d1e4409c78e4e01930122.jpg

所以这两个值比较返回值为true。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕尼黑5122342 #1
    隐式转化是将不是数值类型的,强制转换为数值类型对吗?undefined强制转换为数值类型就是NaN,而NaN==NaN是false对吧?
    2020-01-15 18:58:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师