分3个阶段:
本阶段就是书本中所说的Hoisting,包括:形参变量创立、函数体内变量提升创立 和 函数申明创立。
就是先把函数中所有的变量或者者公告的函数名都先定义好,空间都开拓好。
关于准备阶段的特别说明:
这里装载填充的数据包括:形参 和 申明的函数体。
也许你要问了,为什么一般的变量只是拿到前面定义好,此时值是 undefined,填充数据需要等到执行那一行才进行,而 形参 和 申明的函数 在代码执行前就要装载好呢?
答: 我个人的了解是(有更专业的解释,欢迎批评指正):
关于装载的特别说明:
通过上面的2个阶段,大家就知道,当函数真正一行行开始执行的时候,其实有些值已经存在了,并不是大家想象中的一律为 undefined。
本阶段就是纯粹的执行代码了,执行就包括了:变量赋值、对象调使用等等。
但是本阶段其实JS引擎还做了另外一件事情,就是:代码检查。假如报错了,会直接中断程序,除非用 try/catch 捕获。
本示例的结果是什么呢?大家可以点击下文 “查看更多” 跳转到具体的我的github查看更介绍的分析。