关于解析过程?

来源:4-16 选择练习

TaraTara

2020-04-24 00:29:09

老师可以详细讲解一下这个题的整个解析过程吗?看答案还是不太明白。

比如为什么第一个document.write(a)里a不是变量a而是function a()?

写回答

2回答

好帮手慕码

2020-04-24

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

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

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

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

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

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

可以再测试理解下。

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

0
haraTara
h 请问老师: 1、预解析完成之后,a就是第二个函数 2、(2)a被赋值为1,现在a就是一个变量,函数声明会跳过,调用的时候才会执行,再次输出a的时候,结果就是1 。 这两句我还是觉得有些矛盾? 既然预解析完之后a是一个函数,为什么a作为一个函数还能再被赋值为1,又成为一个变量呢? 变量的声明不是只在预解析的时候进行的吗?
h020-04-24
共1条回复

好帮手慕码

2020-04-24

同学你好,预解析的过程可以参考下图:

http://img.mukewang.com/climg/5ea2c73c0900e92205500477.jpg

预解析会定义变量,但是不会赋值。所以最开始定义的a是函数,后预解析完成之后,又重新赋值为1;

同学可以再理解一下,祝学习愉快~

0

0 学习 · 14456 问题

查看课程