四、变量、作用域与内存

变量

  • 原始值(String,Number,Boolean,Null,Undefined,Symbol)大小固定,保存在栈内存
  • 引用值是对象,保存在堆内存
  • 变量保存引用值时,保存的是指向引用对象的指针

执行上下文与作用域

  • 变量或函数的上下文决定了他们可以访问哪些数据,以及他们的行为;

  • 每个上下文都有一个关联的 变量对象 ;这个上下文中定义的所有变量和函数都存在于这个对象上;我们无法通过代码访问这个变量对象,但后台处理数据会使用它

  • 全局上下文对象会根据宿主环境变化而变化,在浏览器中是window对象

  • 上下文在其所有代码执行完毕后会被销毁,包括上面的所有函数和变量,全局上下文会在应用程序退出前销毁,如关闭网页或退出浏览器

  • 每个函数调用都有自己的上下文,代码执行该函数时,其上下文被推入 上下文栈,执行完后出栈

  • 上下文中的代码执行时会创建变量对象的一个作用域链,该链相当于串起了上下文栈中的所有上下文环境,该链决定了访问变量和函数时的顺序

内存

  • 主流的垃圾回收算法是 标记清理
  • 全局声明,闭包容易导致内存泄露
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容