coderwhy前端课程笔记|javascript教程-1|函数/对象增强,纯函数,柯里化,组合函数,witheval,严格模式|纯函数,副作用,剩余函数,箭头函数不绑定arguments,

这篇博客详细介绍了JavaScript的代码执行流程,包括全局对象、活动对象和变量对象的理解,以及作用域和作用域链的概念。深入探讨了V8引擎的内存管理,如原始数据类型和复杂数据类型的内存分配,以及垃圾回收的几种算法。此外,文章讲解了函数的增强,如arguments对象、箭头函数与剩余参数,以及纯函数的原理和重要性,讨论了闭包的内存泄漏问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二. 整理JavaScript的代码的执行流程

  • 首先在执行前会现在堆内存中开辟一块空间(GO) 存放一些初始的值 如Number String等等
  • 还有代码中定义的一些变量 函数(在parser转成AST树的过程中存放在GO中的 )并没有赋值
  • 同时在执行代码时在执行上下文栈(ECS)中存放一个全局执行上下文(GEC) 用于执行代码
    • GO中对应的函数 也会在堆内存中开辟出空间 为 Function Object 初始一些数据(name length scope chain等)
  • 开始执行代码
  • 每个EC中有着三个重要的内容(VO scope chain 以及this)
  • VO指向对应的作用域(全局作用域(GO) 函数作用域(AO))

三. 说说你对GO/AO/VO的理解以及作用域和作用域链的理解

GO

  • Global Object JS代码在执行前会现在堆内存中创建一个全局对象(GO)
  • 用于存放一些定义好的变量方法等包含Date Array String Number setTimeout等
  • 同时有一个window属性指向自己
  • 同时在语法分析转成AST的过程中也会将一些变量 函数 存放在GO中 只是变量的初始值为undefined

AO

  • 函数在执行前会先在堆内存中创建一个A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习记录wanxiaowan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值