zoukankan      html  css  js  c++  java
  • 浅析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代码全都不执行。

      

    潮平帆远,击水三千
  • 相关阅读:
    poj_1236 强连通分支
    【winform程序】自定义webrowser控件调用IE的版本
    【小程序开发】微信小程序开发中遇到的那些坑...
    【C#多线程】C#多线程 Thread 开发基础
    【管理心得】不懂带人,你就自己干到死
    【80端口占用】win7下80端口被(Pid=4)占用的解决方法
    【顽固BUG】Visual Studio 2015 + TestDriven.NET-3.8.2860_Personal_Beta 调用的目标发生了异常。
    【HPP开发】让所有中小企业拥有自己的APP
    【创业积累】如何快速开发出一个高质量的APP
    【架构师之路】依赖注入原理---IoC框架
  • 原文地址:https://www.cnblogs.com/yfsmooth/p/4388616.html
Copyright © 2011-2022 走看看