fun()

fun()

经过预解析后

function fun(){

    alert('B');
}

var fun;

fun()

这个fun(),fun的值为什么不是undefined,var fun离fun()最近了

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

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

1回答
好帮手慕慕子 2023-01-03 15:04:01

同学你好,问题解答如下:

1、 当变量名和函数名同名时,预解析时优先提升函数,所以fun此时表示一个函数。

2、代码在真正执行阶段,会跳过函数声明和变量声明语句,var fun; 这句代码只是声明变量,并没有赋值,那么,在代码执行阶段会被跳过,所以fun最终还是一个函数,而不是undefined

3、可以给fun变量手动赋值为undefined,在代码执行阶段才会执行该赋值语句,那么,此时的fun就不再是函数了,而是undefined,再添加()作为函数调用就会报错了,示例:

https://img1.sycdn.imooc.com//climg/63b3d34b09787e8018020768.jpg

祝学习愉快~

  • 提问者 慕芸芸 #1

    当变量名与函数名相同时都为a,因为函数声明优先级高,所以a指的是函数,对吗?

    2023-01-03 16:33:40
  • 好帮手慕慕子 回复 提问者 慕芸芸 #2

      是的,在预解析阶段,变量名和函数名都为a时,优先提升函数声明,所以此时a指的是函数,祝学习愉快~

    2023-01-03 16:41:48
  • 提问者 慕芸芸 回复 好帮手慕慕子 #3

    只把函数声明提了,不提变量声明了?是这样吗?

    2023-01-03 17:30:05
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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