【博学谷学习记录】超强总结,用心分享前端|作用域

目录

局部作用域

函数作用域

块作用域

全局作用域

作用域链

JS垃圾回收机制

垃圾回收机制

内存的生命周期


作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问

作用于分为:局部作用域与全局作用域

局部作用域

局部作用域分为:函数作用域和块作用域

函数作用域

在函数内部声明的变量只能在函数内部被访问,外部无法直接访问

函数的参数也是函数内部的局部变量

不同函数内部声明的变量无法互相访问

函数执行完毕后,函数内部的变量实际被清空了

块作用域

在JavaScript中使用 { } 包裹的代码称为代码块,代码块内部声明的变量在外部将有可能访问到

let声明的变量会产生块作用域,var不会产生块作用域

const声明的常量也会产生块作用域

全局作用域

<script> 标签和.js文件的“最外层“就是所谓的全局作用域,在此声明的变量在函数内部也可以被访问

全局作用域中声明的变量,任何其他作用域都可以被访问

注意:

  1. 为window对象动态添加的属性默认也是全局的,不推荐
  2. 函数中未使用任何关键字声明的变量为全局变量,不推荐
  3. 尽可能少的声明全局变量,防止全局变量污染

作用域链

作用域链本质上是底层的变量查找机制

在函数被执行时,会优先查找当前函数作用域中变量

如果当前作用域查找不到则会依次逐级查找父级作用域直到全局作用域

总结:

  1. 嵌套关系的作用域串联起来形成了作用域链
  2. 相同作用域链中按着从小到大的规则查找变量
  3. 子作用域能访问父作用域,父级作用域无法访问子级作用域

JS垃圾回收机制

垃圾回收机制

垃圾回收机制(Garbage Collection)简称GC

JS中内存的分配和回收都是自动完成的,内存在不使用的时候会被垃圾回收器自动回收

正因为垃圾回收器的存在,许多人认为JS不用太关心内存管理的问题

但如果不了解JS的内存管理机制,我们同样非常容易造成内存泄漏(内存无法被回收)的情况

不再用到的内存,没有及时释放,就叫做内存泄漏

内存的生命周期

JS环境中分配的内存,一般有如下生命周期

  1. 内存分配:当我们声明变量、函数、对象的时候,系统会自动为他们分配内存
  2. 内存使用:即读写内存,也就是使用变量、函数等
  3. 内存回收:使用完毕,由垃圾回收自动回收不再使用的内存

说明:全局变量一般不会回收(关闭页面回收)

一般情况下局部变量的值,不用了,会被自动回收掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值