浅析js的执行顺序

    javascript是一种描述型的脚本语言,是一种解析语言,由浏览器动态解析,不同种类的浏览器不同版本的浏览器对于js的解析有着微小的差别,不同浏览器的js解析引擎效率也有高低,下面来给大家分析一下js的执行顺序,希望对大家能有所帮助,欢迎大家交流指正。

    首先js的执行过程分为两大部分,第一部分,解析过程,也称预编译期。主要工作就是对于js的代码中声明的所有变量和函数进行预处理。需要注意的是,再此进行处理的仅是声明函数,而对于变量的处理仅是声明,并开辟出一块内存空间,不进行复制操作。

    第二部分,执行过程,在执行过程中,浏览器的js引擎对于每个代码块进行顺序执行,如果有外部引用的js,且js有相互关联,此时就要注意,不同js的引入顺序,如果声明代码块在调用代码块后调用则将不会达到预期的效果。

  总结来说,js的执行分为两部分,解析过程和执行过程。解析时按照代码块,一段一段进行解析,执行时按照代码块顺序逐行执行,解析一个代码块,执行一个代码块。因为是解释性语言,所以js如果在解析过程有错误,则不会提示,也可以理解为js不会出现编译错误,但如果出现了运行时错误,出现错误一下的所有js代码将不会继续执行。

下面通过一段代码,举例给大家说明执行的过程。

现象1.通过第一部分js调用第二部分的a函数,结果是什么结果都未输出,说明了js在发生运行错误时,本块的余下代码将不会执行。

现象2.第二段代码函数调用在定义之前,但是却输出了“第二段js”,结果说明了在预编译期,引擎为js定义好的函数进行声明,并开辟了内存空间。

现象3.第三段js,alert(word2)输出undefined,结果说明js在预编译期,只是对变量进行,声明,开辟内存空间,并不赋值。

现象4.b函数没有顺利调用,因为b函数声明方式的原因,js并未给其赋值。

现象5.button能顺利提示go,并不能提示出come,结果说明,在发生运行错误后的本块js代码全都不执行。

  技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。