zoukankan      html  css  js  c++  java
  • javaScript代码执行顺序

          javaScript是一种描述型脚本语言,由浏览器进行动态的解析和执行。 页面加载过程中,浏览器会对页面上载入的每个js代码块进行扫描。 JavaScript是一段一段的分析执行的,在分析执行同一段代码中,定义式函数会 被提取出来优先执行。函数定义执行完毕后,才会按顺序执行其他代码。

    一、代码块

       JavaScript代码块是由一对script开始标签和结束标签包裹的一段代码。 JavaScript是按照代码块来进行编译和执行的,代码块之间相互独立,但是前面执行的变量和方法,后面的代码块可以使用。 前面代码块报错,不影响后面代码块的执行。

    二、预处理期和执行期

          JavaScript的执行过程分为两个阶段:预处理期和执行期。 预编译期会对本代码块中的所有声明的变量和函数(此时处理的只是声明式函数,而非赋值式函数)进行处理,变量和函数只是进行了声明,并未进行初始化及赋值(即只是分配了内存)。

    三、执行顺序

          首先进行预处理,之后按照代码的顺序执行代码。

    四、声明式函数和赋值式函数

    1.声明式函数     

        function Fun(){ 

                         

       } 

    2.赋值式函数     

       var Fn = function{ 

       } 

    五、变量作用域及作用域链

          函数执行过程中,每遇到一个变量,都会经历一次标示符解析的过程,决定从哪里获取及存储数据 。该过程从作用域链的活动对象开始查找,如果找到了就用这个标示符,如果没有找到就 继续搜索作用域链中的下一个对象,如果搜索完所有的对象都未找到,则认为该标示符未定义。 因此标示符所在的位置越深,读写速度越慢,全局变量总是在作用域链的最末端,因此编写代码时应该尽量少使用全局变量 如果一个跨作用域的对象被引用了一次以上,则先把它存储到局部变量里再使用。 因此,如果局部变量和全局变量同名,则程序会使用局部变量而不是全局变量。 var a = "globalStr"; function fun(){    alert(a);    var a = "innerstr"; }//弹出undefined。 局部变量a只进行声明并没有赋值,因此输出undefined。

    function fun(){

         alert(“测试内容1”);

    }  

    fun();  

    function fun(){

         alert(“测试内容2”);  

    }

    fun();

    两次函数调用都输出“测试内容2"

          这表明,在JavaScript分析执行同一段代码时,定义式的函数会被提取出来优先执行。之后,才会按顺序执行 其他的代码。也就是第一个函数被调用之前已经被第二个函数覆盖了,因此第一次调用函数也同样输出第二个函数的内容。

  • 相关阅读:
    学习笔记:javascript 窗口对象(window)
    学习笔记:javascript内置对象:数组对象
    学习笔记:javascript内置对象:日期对象
    学习笔记:javascript内置对象:数学对象
    学习笔记:javascript内置对象:字符串对象
    初次尝试轮播图
    今天我开通了博客园
    javaweb项目运转流程
    idea tomcat启动无效
    mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚
  • 原文地址:https://www.cnblogs.com/minshia/p/6230752.html
Copyright © 2011-2022 走看看