js 执行环境

作者: 唯有前行可破焦虑 | 来源:发表于2019-05-10 20:39 被阅读0次

    Javascript是解释性语言,执行的时候动态解析编译。在端运行的时候,这里以浏览器为讨论环境。

    浏览器主要分为Browser进程,Render进程,具体关系这里不深入讨论,可以参考下图:

    这边有几个概念需要了解下:

    执行环境:分为全局执行环境和函数执行环境,定义了变量或函数有权访问的其他数据;

    注:web浏览器中全局执行环境被认为是window,关闭页面或浏览器才会销毁;

    变量对象:每个执行环境都有一个变量对象,保存着当前执行环境中的所有变量和函数;

    作用域:当前变量对象中的属性,js解析阶段就会确定;

    活动对象:如果是函数在执行,将函数的活动对象设置为变量对象;

    当代码在一个环境执行的时候,会创建一个

    作用域链:它定义了当前执行环境有权访问的变量或函数的访问顺序,作用域链的顶端永远是当前执行环境的变量对象,再下一个变量对象就是下一个包含环境,一直延伸到全局执行环境的变量对象;

    注:全局作用域的变量对象,永远是作用域链的最后一个对象。

    代码执行的时候,会先判断浏览器缓存中是否有代码可执行的机器代码缓存(每个js引擎实现的方式不一致),如果有直接推入栈中执行,没有进入以下编译步骤:

    v8 引擎:

       

    相关文章

      网友评论

        本文标题:js 执行环境

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