隐式类型转换不明白

隐式类型转换不明白

# 具体遇到的问题
视频里讲解的隐式类型转换的本质是调用了Number()函数,那么有时候为什么又调用Boolean()函数呢?

例如:null == undefined; // 结果是true,这里比较值,调用的就是Booelan()函数;将近4000块钱的教程,视频里老师的知识点都不讲完整为什么,课后的题目有的总要我们自己去猜?
# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

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

1回答

同学你好,视频中讲解的是正确的,目前阶段所学的的数据类型使用==进行比较时,不同数据类型之间,默认是会先使用Number()进行隐式类型准换,转成数值后再进行比较。

老师在同学的上一个提问中解释的null和undefined在比较时,会隐式类型转换成布尔值这个说法是错误的,非常抱歉给同学造成了困扰,这里重新给同学梳理下null == undefined; 为什么等于true。

由于null和undefined比较特殊,在进行比较时,并不会进行隐式类型转换,可以参考下面的测试理解,undefined 与 布尔值false进行比较,返回结果是false,说明undefined在比较的时候并没有经过隐式类型转换为false。null也是同样是的道理。

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

那么为什么undefined == null 返回的结果是true呢, 因为JavaScript最初设计时,模仿了其他语言,只设置了null 来表示无的情况,但是后来JavaScript的设计者Brendan Eich觉得这样不够,所以又增加了undefined这个数据类型用来表示无的情况,使用Number()方法转换结果为NaN,虽然使用typeof检测两者返回的结果是不一样的,但是由于它俩表示的意思非常相近,默认它俩是相等的,所以使用 == 比较两者时,返回结果为true。

所以说,js语法规定的undefined == null 返回结果是true,这属于一种特殊的情况,需要特殊记忆的。

祝学习愉快~

  • 怒焰狂暴 提问者 #1
    自己看了其它教程明白了,其实就是一句话,没老师说的这么复杂,因为作者当时只设置了null这个值,后面觉得这个不足以表示,后面又添加了一个undefined这个数据类型,undefined是从null衍生过来的。
    2020-10-18 23:42:57
  • 怒焰狂暴 提问者 #2
    确切是说null类型,不是值,所以null == undefined
    2020-10-18 23:44:08
  • 好帮手慕慕子 回复 提问者 怒焰狂暴 #3
    同学你好,理解是对的,真棒!!!祝学习愉快~
    2020-10-18 23:47:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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