作用域链与闭包工作
作用域,作用域链,闭包以及垃圾回收它们有一个共同点:那就是它们通常都是手动执行的。闭包实际上是如何工作的?垃圾回收在什么时候发生?作用域链到底是什么?
通过这次学习,我们将发现这些并不是什么黑魔法。我们没有必要去一一解释这些语言特性,实际上就算不理解它们你也已经使用它们很长时间了。
作用域
在JavaScript中最主要的作用域是词法作用域。目前在学习语言的开始,我们通过函数function创造了一个作用域,这也是所有开发者都熟悉的用法。
ES6在不久前定义了块级作用域,通过花括号包裹住一个块级作用域。
变量初始化
可以通过变量初始化方式来决定它将属于何种作用域类型。
词法作用域
var 可以用来声明一个变量处于当前函数作用域中如:
function someFunc () { var aVariable;}
aVariable 作用范围在someFunc函数中
块级作用域
let 和 const 用来声明一个变量处于当前花括号所包裹的块级作用域中:
if (true) { let aVariable;}
aVariable变量处于 if语句声明的块级作用域中。