美文网首页javascript
js底层原理二(上下文与作用域)

js底层原理二(上下文与作用域)

作者: 沐雨芝录 | 来源:发表于2019-03-25 13:37 被阅读80次

    定义:

    上下文(content):函数被调用的时候, 查看this指向哪个object, 那么那个object 就是当前的 "上下文"。
    作用域(scope):函数被调用的时候, 各个变量的作用区域。

    js执行有两个阶段:

    (1)预“编译”阶段(一定要注意,这个编译,不是编译成机器码的编译):

    • 浏览器的JavaScript引擎“解析”JavaScript代码。
    • 建立arguments对象(隐藏对象,不可见),函数,参数,变量
    • 建立作用域链
    • 确定this的值(或者说指向)

    (2)代码执行阶段

    浏览器的JavaScript引擎一步步执行代码段,从上至下。
    给变量赋值,确定函数的引用。

    实例论证:

    1 function fn(a){
    2   var a = 1;
    3   function a(){
    4      console.log("a函数")
    5   }
    6    alert(a)
    7 }
    8 fn(2)
    

    实际实现代码:

    1 function fn(a){
    2  var a = undefined;
    3    a = 2;
    4    a = function a(){
    5       console.log("a函数")
    6    }
    7    a = 1;
    8    alert(a); // 1
    9 }
    10 fn(2)
    

    构建执行环境作用域时,arguments对象(隐藏对象,不可见),函数,参数,变量的声明与构建有先后顺序。
    arguments对象(隐藏对象,不可见)—>函数—>参数—>变量


    看过我js底层原理一的同学就会发现,这其实就是变量,函数提升的另一个解释而已。

    相关文章

      网友评论

        本文标题:js底层原理二(上下文与作用域)

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