美文网首页
函数作用域以及函数底层运行机制

函数作用域以及函数底层运行机制

作者: 我不是章鱼哥 | 来源:发表于2021-04-26 22:06 被阅读0次

函数的底层运行机制:
创建函数:声明函数+赋值
1.在Heap堆内存中分配一块内存空间【16进制的内存地址】
2.除了存储一些键值对(和对象一样),还做了很多其他的事情:
@1 声明了函数的作用域[[scope]],作用域的值是当前创建函数时候所在的上下文
@2 把函数体内的代码当作字符串存储到对内存中
@3 和对象一样,存储一些自己的键值对,【静态私有的属性和方法】
3.把堆内存地址赋给对应的变量【函数名】即可
执行函数:
1.形成一个私有的上下文“EC(x)”供函数体中的代码执行
@1 在私有上下文中,有一个后期存储当前上下文中声明变量的地方“私有变量对象AO”[AO是VO的分支,在函数中,变量对象是[AO]
@2 进栈执行
2.在代码执行前,他还会处理很多事情
@1 初始作用域链[[scope-chain]]:形成自己的上下文,函数的作用域(创建时候声明的)
作用:但凡代码执行的时候,遇到一个变量,首先看是否是自己上下文中的私有变量(AO),如果是自己的,接下来对变量的操作,和外界没有任何的关系;如果不是自己的,则继续按照作用域链,查找是否为其上级上下文(也就是函数作用域)中的......如果查找的过程中一直没有,找到EC(G)全局执行上下文就结束即可
@2 初始化this指向
@3 初始化arguments(实参集合)
@4 形参赋值:形参变量也是当前上下文中的私有变量,是要存储到AO中的
@5 变量提升
3.代码执行
4.一般情况下,在代码执行完,当前形成的私有上下文会出栈释放,以此来优化内存空间

        var x=[12,23]
        function fn(y){
            y[0]=100;
            y=[100];
            y[1]=200;
            console.log(y);//100,200
        }
        fn(x)
        console.log(x);//100,23

相关文章

  • 函数作用域以及函数底层运行机制

    函数的底层运行机制:创建函数:声明函数+赋值1.在Heap堆内存中分配一块内存空间【16进制的内存地址】2.除了存...

  • 变量声明、声明提前和作用域

    一. 作用域 分为全局作用域和函数作用域 函数作用域简言之就是:变量在声明他们的函数体以及这个函数体嵌套的任意函数...

  • JavaScript 作用域和闭包理解

    作用域: 分为函数作用域,和块级作用域; 函数作用域 函数作用域外面的无法访问函数作用域内部的变量和函数,这样就可...

  • Javascript 中的作用域与作用域链

    一、作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。作用...

  • 前端总结

    闭包以及应用场景 作用域作用域决定了代码区块中变量、函数、对象和其他资源的可见性全局作用域、函数作用域和块级作用域...

  • 详解Kotlin中的作用域函数

    Kotlin作用域函数 作用域函数,Kotlin在语法层面支持拓展函数,作用域函数,作用域函数是指对数据做一些变换...

  • JavaScript作用域链

    作用域时变量与函数的可访问范围。全局变量拥有全局作用域,局部变量是在函数体内声明而且只作用在函数体内部以及该函数体...

  • 第九天,函数作用域和声明提前

    函数作用域和函数声明提前。 函数作用域,分为全局作用域和部分作用域,在系统执行函数时会自动创建一个作用域,在执行完...

  • js 变量作用域问题 以及 let

    JavaScript中有以下两种作用域 全局作用域函数作用域全局作用域是函数之外(最外层代码)的作用域。在函数之外...

  • Kotlin 作用域函数

    目录 作用域函数分析 常见作用域函数with,apply,also,let,run,with 作用域函数用法 1....

网友评论

      本文标题:函数作用域以及函数底层运行机制

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