• 浅析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代码全都不执行。

      

    潮平帆远,击水三千
  • 相关阅读:
    Python执行Linux系统命令的4种方法
    linux之sed用法
    Struts中使用json-lib-2.4-jdk15.jar时抛出Source not found
    警告: couldn't clear tomcat cache
    Mysql数据库中图片字段Blob类型和String类型相互转换
    严重: Exception starting filter struts2 解决办法
    解决Tomcat启动时出现的The APR based Apache Tomcat Native library异常
    严重: Error, processing connection
    Android开发时,sqlite创建表成功,insert不报错,但没有数据插入的原因
    getOutputStream() has already been called for this response异常的原因和解决方法
  • 原文地址:https://www.cnblogs.com/yfsmooth/p/4388616.html
Copyright © 2020-2023  润新知