Skip to content

Commit

Permalink
Update files/zh-cn/web/javascript/closures/index.md
Browse files Browse the repository at this point in the history
Co-authored-by: A1lo <[email protected]>
  • Loading branch information
familyboat and yin1999 authored Oct 22, 2024
1 parent 89f46cc commit f332b2f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion files/zh-cn/web/javascript/closures/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ myFunc();

第一眼看上去,也许不能直观地看出这段代码能够正常运行。在一些编程语言中,函数内的局部变量仅存在于函数的执行期间。一旦 `makeFunc()` 执行完毕,你可能会认为 `name` 变量将不能再被访问。然而,因为代码仍按预期运行,所以在 JavaScript 中情况显然与此不同。

原因在于,JavaScript 中的函数创建了闭包。 *闭包*是由函数以及函数声明所在的词法环境组合而成的。该环境包含了这个闭包创建时作用域内的任何局部变量。在本例中,`myFunc` 是执行 `makeFunc` 时创建的 `displayName` 函数的实例引用。`displayName` 的实例有一个它的词法环境的引用,而 `name` 变量位于这个词法环境中。因此,当 `myFunc` 被调用时,`name` 变量仍然可用,其值 `Mozilla` 就被传递到`console.log`中。
原因在于,JavaScript 中的函数创建了闭包。 *闭包*是由函数以及函数声明所在的词法环境组合而成的。该环境包含了这个闭包创建时作用域内的任何局部变量。在本例中,`myFunc` 是执行 `makeFunc` 时创建的 `displayName` 函数的实例引用。`displayName` 的实例有一个它的词法环境的引用,而 `name` 变量位于这个词法环境中。因此,当 `myFunc` 被调用时,`name` 变量仍然可用,其值 `Mozilla` 就被传递到 `console.log` 中。

下面是一个稍微更有意思的示例——一个 `makeAdder` 函数:

Expand Down

0 comments on commit f332b2f

Please sign in to comment.