老师麻烦解答一下
fun();
var fun=function(){
alert(‘A’);
}
//*************************
function fun(){
alert(‘B’);
}
//老师这里没太理解,其实明面上声明提升一个是变量,一个是函数,懂。但是当预解析输出函
数后,(执行阶段)下一步执行变量fun被函数A赋值,然后再下一步执行函数B为什么没有覆盖变量fun(函数A): 是因为函数B被预解析不再执行?还是一个是被赋值函数的(变量)一个是(函数)不是同一个体系从而跳过?
//*************************
fun();
那么最后这个输出的是变量fun(被赋值函数A),还是函数B
14
收起
正在回答
1回答
同学你好,流程如下:
1、预解析提升fun变量并赋值为undefined,提升fun函数体,但是这两个名字一致,所以最终函数提升在前面。
2、从上到下按照顺序执行代码,调用fun(),那么执行的就是fun函数体,弹出‘B’
3、接着fun变量被赋值为函数A,下面是fun(B)函数体,而函数只有在调用的时候才会执行,所以这里会跳过。最终调用fun(),执行的也就是函数A,弹出‘A’。
自己再理解下,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星