我表示这一题没搞清白。。。。

我表示这一题没搞清白。。。。

document.write(a);

var a = 1;

function a(){

    document.write("a1");

}

function a(){

    document.write("a2");

}

document.write(a);

a();

// 1.第一行 document.write(a); 没出结果?

// 2.为什么成了 输出 函数 a2 了。 

// 这题执行顺序没搞清

正在回答

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

1回答

你好,可以参考下面的思路:

1、在预解析的时候,a变量会提升赋值为undefined,但是下面有a函数,名称重复了,函数提升会覆盖变量,现在a就是一个函数,下面还有一个a函数,后面的会覆盖前面的函数,所以现在a就是第二个函数。

2、预解析完之后开始从上到下按照顺序执行代码:

(1)开始输出a,a是提升之后的第二个函数,所以输出的结果就是第二个函数。

(2)a被赋值为1,现在a就是一个变量,函数声明会跳过,调用的时候才会执行,再次输出a的时候,结果就是1 。

(3)最后调用a,现在a是一个变量,不是函数,所以会报错。

可以再测试理解下,祝学习愉快!

  • 007号学员 提问者 #1
    函数名a , 会覆盖 变量a ? ???
    2019-05-17 17:13:31
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

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

在线咨询

领取优惠

免费试听

领取大纲

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