js代码执行顺序之我见
前言:随着这几天对于js深入的学习,看到书上给出的一些源代码实在是疑惑不解;有时候拉出一个没见过的函数,找半天一看这函数在下半部分代码里呢,还是程序员自己定义的;对于我这样的小白来说,如果没有对js代码的执行顺序有一个认识,看起别人的代码来实在是吃力啊。
我也翻阅过了网上大部分关于js代码执行顺序的文章,今天我就将从这些文章里吸取到的知识,总结出来,以一个通俗易懂的方式解释。
那么,进入今天的主题。
将整体代码打乱,分类,再重组。
1.打乱
说到打乱,具体是怎么个打乱法?其实很简单,玩过乐高积木吗?当你把一座完好的城堡拆成一个个积木零件的时候,这就是打乱。而我们也会仿照这种方式,将所有代码打乱。
把所有代码拆成一个个函数,一个个变量定义语句,一个个执行语句,就已经达到了我们的效果。
2.分类
又是个怎么分类法?其实我们在打乱环节已经搞定了。
我们将代码分成了:
- 函数
- 变量定义语句
- 执行语句
3.重组
既然已经分好类了,咱们就可以开始重组了。我会依照代码执行顺序,把三个类别分成两个部分。
按照执行顺序重组后的代码,从上往下依次执行:
- 函数与变量定义语句(并列)
- 执行语句
为什么要这样重组呢?因为在js代码执行的过程中,要分为两个部分:
- 预编译:
在这个阶段,js引擎会将所有的函数定义与变量定义语句先执行;换句话说,js引擎会在正式执行代码之前,把所有函数和变量创建好。 - 正式执行:
在这个阶段,js引擎会把除了函数定义与变量定义语句之外的其他语句,按照从上至下的顺序依次执行。
重难点:
有敏锐一些的同学这个时候可能就会想:既然函数定义语句和变量定义语句都是在预编译阶段就优先搞定了,为什么还要细化成函数定义和变量定义呢?直接说是定义语句不就好了吗?
我这么做当然是有原因的!!听好了!
函数定义与变量定义其实在执行的时候本质上的不同!非常重要!
function abc(