作用域链、垃圾回收机制、闭包与函数提升
局部作用域
局部作用域分为函数作用域和块作用域。
1.函数作用域
在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。
2.块级作用域
全局作用域
script标签和.js文件的最外层就是所谓的全局作用域,在此声明的变量在函数内部也可以被访问,全局作用域中的声明的变量,任何其他作用域都可以访问。
作用域链
垃圾回收机制
函数里的局部变量,当函数执行完毕,局部变量不再被使用,就会被自动回收。
对于循环引用的问题,由于global无法找到函数内部的变量,根部访问不到,所以自动清除,解决了引用计数循环引用的问题。
标记清除法的核心思路是:从根部扫描对象,能查找到的就是使用的,查找不到的就要回收。
闭包
闭包会有内存泄漏的风险