关于函数的问题

关于函数的问题

老师,为什么第一种情况结果是B,第二种情况就报错呢


https://img1.sycdn.imooc.com//climg/61678af009720c5e06410501.jpg

正在回答 回答被采纳积分+1

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

1回答
好帮手慕久久 2021-10-14 09:57:35

同学你好,解答如下:

情况1:

代码执行之前会预解析,变量和函数声明会被提升,因此情况1的代码预解析后效果如下:

https://img1.sycdn.imooc.com//climg/61678dbe09aceeef06200301.jpg

由于变量声明无法覆盖函数声明,所以fun是函数:

https://img1.sycdn.imooc.com//climg/61678d7c0923078305790304.jpg

因此可以直接调用:

https://img1.sycdn.imooc.com//climg/61678da309ecbae205160300.jpg

情况2:

代码执行之前会预解析,变量和函数声明会被提升,如果有赋值语句,赋值语句会保留在原地,因此情况2的代码预解析后效果如下:

https://img1.sycdn.imooc.com//climg/61678e1c0900396007420336.jpg

代码执行时,会先给fun1赋值成数字5,然后再执行fun():

https://img1.sycdn.imooc.com//climg/61678e3e09f818b705600343.jpg

由于数字不能使用括号调用,因此报错了。

祝学习愉快!

  • 提问者 M猫先生 #1

    第一种情况不是执行的undefined()这种情况吗,fun的声明也是提升了,值为undefined呀,这种情况应该也是报错的

    2021-10-29 13:38:19
  • 好帮手慕久久 回复 提问者 M猫先生 #2

    同学你好,当同名的变量和函数同时提示时,函数优先,即:

    https://img1.sycdn.imooc.com//climg/617ba8b209cbeffc08020339.jpg

    所以调用的不是undefined,而是函数function fun(){ ...  }。

    关于该点,建议回顾一下视频:

    https://class.imooc.com/lesson/2122#mid=50418(9分28秒)

    祝学习愉快!

    2021-10-29 15:56:39
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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