【nodeschool】【scope-chains-closures】Scopes【译】

作用域链与闭包工作

作用域,作用域链,闭包以及垃圾回收它们有一个共同点:那就是它们通常都是手动执行的。闭包实际上是如何工作的?垃圾回收在什么时候发生?作用域链到底是什么?

通过这次学习,我们将发现这些并不是什么黑魔法。我们没有必要去一一解释这些语言特性,实际上就算不理解它们你也已经使用它们很长时间了。

作用域

在JavaScript中最主要的作用域是词法作用域。目前在学习语言的开始,我们通过函数function创造了一个作用域,这也是所有开发者都熟悉的用法。

ES6在不久前定义了块级作用域,通过花括号包裹住一个块级作用域。

变量初始化

可以通过变量初始化方式来决定它将属于何种作用域类型。

词法作用域

var 可以用来声明一个变量处于当前函数作用域中如:

function someFunc ()  {
    var aVariable;
}

aVariable 作用范围在someFunc函数中

块级作用域

let 和 const 用来声明一个变量处于当前花括号所包裹的块级作用域中:

if (true) {
    let aVariable;
}

aVariable变量处于 if语句声明的块级作用域中。

猜你喜欢

转载自my.oschina.net/cc4zj/blog/1812465
今日推荐