ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

day37 闭包、变量提升

2026/8/15 8:37:05 拓冰建站 浏览量
day37 闭包、变量提升

目录

      • 闭包
      • 变量提升
      • 函数提升

闭包

闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。(mdn)

  1. 怎么理解闭包?

    • 闭包 = 内层函数 + 外层函数的变量
  2. 闭包的作用?

    • 封闭数据,实现数据私有,外部也可以访问函数内部的变量
    • 闭包很有用,因为它允许将函数与其所操作的某些数据(环境)关联起来
  3. 闭包可能引起的问题?

    • 内存泄漏

变量提升

允许在变量声明之前即被访问。

<script>console.log(str + 'hhh');var str = 'aaa'console.log(str + 'hhh');console.log(str2 + 'lll');let str2 = 'bbb'console.log(str2 + 'lll');</script>

在这里插入图片描述

总结:

  1. 变量在未声明即被访问时会报语法错误
  2. 变量在声明之前即被访问,变量的值为 undefined
  3. let 声明的变量不存在变量提升,推荐使用 let
  4. 变量提升出现在相同作用域当中
  5. 实际开发中推荐先声明再访问变量

函数提升

函数提升与变量提升比较类似,是指函数在声明之前即可被调用。


总结:

  1. 函数提升能够使函数的声明调用更灵活
  2. 函数表达式不存在提升的现象
  3. 函数提升出现在相同作用域当中