Javascript第四章变量的提升和预解析方法流程第四课

Javascript第四章变量的提升和预解析方法流程第四课
更多免费教学文章请关注这里
首先我们写一个代码:

解析前代码:

Javascript第四章变量的提升和预解析方法流程第四课

预解析(全局)后代码:
Javascript第四章变量的提升和预解析方法流程第四课
第二步:一行一行的执行代码

Javascript第四章变量的提升和预解析方法流程第四课

第三步:当执行函数时,再次进行预解析 局部作用域依然跟第一步一样解析

Javascript第四章变量的提升和预解析方法流程第四课

解析后: 放到当前局部作用域的上面(放到自己所在作用域的上面)

Javascript第四章变量的提升和预解析方法流程第四课

第四部:接着一步一步的执行

为什么输出的是undefined?

解答:因为就近原则,var num 全局变量和 function内的方法局部标量num是一样的, 所以优先是取局部变量里的值,但是代码执行,从上到下,未给num赋值,所以输出结果是undefined