美文网首页
js执行相关概念

js执行相关概念

作者: bear_new | 来源:发表于2018-01-28 11:38 被阅读0次

    1. 栈内存和堆内存

    • 栈内存

    连续的存储空间,类似数据结构中的栈,用于存放数值,字符,内存地址等小数据。

    基本类型数据的值被保存在栈内存中。

    Number,String,Boolean,Null,Undefined
    
    • 堆内存

    散列的存储空间,类似于数据结构中的链表,存放动态变化的大数据。

    引用类型的值被保存在堆内存中,栈内存中仅保存堆内存的地址。

    Object,Array,Function
    

    2. 变量作用域

    • 全局变量
    • 局部变量

    当函数在执行时,会创建一个封闭的执行期上下文环境,函数内部声明的变量仅可在函数内部使用,外部无法访问,而全局变量则在任何地方都可以使用

    3. JS预编译

    1. 语法分析

    通篇扫描js文件,检查是否有低级语法错误

    1. 预编译4部曲

    未进入执行阶段,变量对象VO(variable object)都不能访问,进入执行阶段后,变量对象VO转变为了活动对象AO(active object),里面的属性都能被访问了,然后开始执行阶段的操作。

    Index Content
    第一步 创建AO对象(执行期上下文对象,全局为GO)
    第二步 将形参和变量声明作为AO对象的属性名,值为Undefined
    第三步 将实参值传递给形参,即赋值给AO对象对应属性名
    第四步 将函数声明为AO对象的方法名,值为函数体
    1. 解释执行:解释一行,执行一行。
    function test(a){ 
      var b=1; function c(){}  
    }
    test(2);
    // 函数预编译四部曲(函数执行前一刻,不执行不会预编译),全局预编译同理
    1---testAO
        {}
    2---testAO
        {a:undefined,b:undefined}
    3---testAO
        {a:2,b:undefined}
    4---testAO
        {a:2,b:1,c:function(){}} 
    

    相关文章

      网友评论

          本文标题:js执行相关概念

          本文链接:https://www.haomeiwen.com/subject/vlvaaxtx.html