js学习1--作用域、垃圾回收机制、闭包与函数提升

48 阅读1分钟

作用域链、垃圾回收机制、闭包与函数提升

局部作用域

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

1.函数作用域

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

image.png

2.块级作用域

image.png

全局作用域

script标签和.js文件的最外层就是所谓的全局作用域,在此声明的变量在函数内部也可以被访问,全局作用域中的声明的变量,任何其他作用域都可以访问。

image.png

作用域链

image.png

垃圾回收机制

image.png

函数里的局部变量,当函数执行完毕,局部变量不再被使用,就会被自动回收。

image.png

image.png

image.png

image.png

image.png

对于循环引用的问题,由于global无法找到函数内部的变量,根部访问不到,所以自动清除,解决了引用计数循环引用的问题。

标记清除法的核心思路是:从根部扫描对象,能查找到的就是使用的,查找不到的就要回收。

闭包

image.png

image.png

image.png

闭包会有内存泄漏的风险

函数提升

image.png