Javascript变量范围和闭包:入门

Javascript变量范围和闭包:入门

对于大多数人来说,JavaScript似乎是一种非常容易上手的编程语言,但是对于初学者而言,某些概念可能会变得非常棘手。 最常提出的主题之一是可变范围闭包是什么,因此在这篇文章中,我将尝试以对初学者友好的方式介绍这些概念。

范围

当我们谈论范围时 ,我们指的是一个或多个实体对我们代码的某些部分的可见性。 出于本文的目的,我们的实体将限于变量。

Javascript中的作用域有两种: globallocal

全局范围非常简单:在任何函数或花括号之外定义的任何变量都是全局范围的一部分,可以从代码中的任何位置进行访问。

本地范围稍微复杂一些。 function声明或花括号内定义的任何变量只能在分别声明的函数或代码块内访问。

好的,这基本上是您需要了解的有关可变范围的全部信息。 让我们看一些简单的例子:

刚开始时使用varlet块作用域和定义可能看起来有些混乱,但是我建议您阅读使用let和const进行Java语言变量提升的指南 (阅读3分钟),并仔细研究let 关键字的 MDN文档,以解决所有剩余的问题和怀疑。

关闭

关闭是一开始看上去似乎令人困惑的事情之一,但实际上并非如此。 在另一个函数内部定义的函数是闭包。 当您要从函数外部访问在函数范围内定义的变量时,闭包特别有用。

闭包的实际用途是定义一组公共函数,这些公共函数可以获取或设置函数内部的一些私有变量(这是面向对象编程中的一种非常常见的用例)。 这是一个非常有效的闭包示例:

加起来

范围是指变量的可访问性。 它可以是公共的(在任何函数和花括号外部定义,并且可以在代码中的任何位置访问),也可以是局部的(在函数或块内部定义,并且只能在所述函数或块内部访问)。 闭包是在其他函数内部定义的函数,可用于从其自身作用域之外访问函数的私有变量。

From: https://hackernoon.com/javascript-variable-scope-closures-a-primer-ace00b362eae