zoukankan      html  css  js  c++  java
  • js全局的解析与执行过程

    先看下面实例的执行结果:

    alert(a);//undefined
    alert(b);//报错
    alert(f);//输出f函数字符串
    alert(g);//undefined
    var a = 1; var b = 2; alert(b);//2 function f(){ console.log('ff'); } var g = function { console.log('gg'); } alert(g);//输出g函数字符串

    为什么出现这种情况,就要明白js解析和执行过程

    js解析与执行过程:先预处理再执行
    预处理:
    1 创建词法对象(也可叫环境对象,环境上下文,上下文对象,这里只用于理解,标准中分的更细),全局环境下(浏览器)可理解是window对象
    2 扫描用声明方式创建的函数和var定义的变量
    3 将扫描到的变量和函数词法对象里面去:变量undefined,函数是引用
    预处理后,出现如下结果:

    window{
        a:undefined;
        b:
        f:指向函数;
    }

    执行阶段:

    1 会把变量的值和非声明方式创建的函数和变量添加进去

    window{
        a:1;
        b:2;
        f:指向函数;
        g:指向函数;
    }

    这样就解释了上面实例的结果了,上面的是预处理,下面是执行了

     另外:js预处理对命名冲突的处理

    1 处理函数声明冲突会覆盖
    2 处理变量声明会忽略

  • 相关阅读:
    Java实现分页
    研发技能列表
    shell 函数
    养生
    再谈创新
    写代码注意事项
    排查问题方法
    简历撰写
    jenkins
    架构
  • 原文地址:https://www.cnblogs.com/by-dxm/p/6529533.html
Copyright © 2011-2022 走看看