1.作用域
定义:规定了变量能被访问的范围
分类:
1.局部作用域
分类
1.函数作用域
在函数内部的
2.块作用域
用{}包裹的代码称为代码块,{}里面声明的变量在外部有可能无法被访问,lei ,const声明的无法被访问,var没有块作用域
2.全局作用域
写在script标签里面或.JS文件里的
2.作用域链
本质是一种查找机制
总结
3.垃圾回收机制
1.含义
2.内存的生命周期
3.堆和栈
4.垃圾回收算法
1.引用计数法
现在基本不再使用
缺点
2.标记清除法
根部出发,不能访问到的就回收
4.闭包 (closure)
1.含义
函数套函数,里面的函数引用了外面函数的变量
2.闭包的作用:
示例
闭包常用写法以及实现在函数外部使用函数内部变量
<script>
// 常见的闭包形式 外部可以访问使用函数内部的变量
function outer(){
let a=10
function fn(){
console.log(a)
}
return fn//返回的是一个函数
}
const fun=outer()//用一个变量来接收函数
fun()//调用函数 实现在函数外部使用函数内部的变量
</script>
3.闭包的应用
实现数据的私有
示例
// 使用闭包做一个统计函数调用次数的和函数
function count() {
let i = 0
function fn() {
i++
console.log(i)
}
return fn
}
const fcount = count()
4.闭包可能引起的问题
内存泄漏
因为外面的全局函数到关闭时才会销毁,所以闭包里面返回的函数会一直被调用,导致从根部一直能找到,所以会内存泄漏
5.变量提升
只在var中存在
流程