JavaScript 闭包
1.JavaScript 闭包
前言
闭包(Closure)是JavaScript中一个非常重要的概念,指的是函数可以访问其词法作用域以外的变量。简单来说,当一个函数内部定义的函数引用了外部函数的变量时,就形成了闭包。
要理解闭包,首先需要了解词法作用域(也称为静态作用域)。词法作用域是指在代码编写阶段就确定了变量的作用域,不会受到函数的调用位置影响。在JavaScript中,每当定义一个函数时,它会创建一个作用域,这个作用域会包含函数内部声明的所有变量。
当一个函数返回另一个函数时,内部函数可以访问外部函数中声明的变量,即使外部函数已经执行完毕,这些变量依然可以被内部函数访问,这就是闭包的概念。
特点
闭包的主要特点有:
- 内部函数可以访问外部函数的变量,即使外部函数已经执行完毕。
- 闭包可以用于封装数据和行为,实现类似于面向对象编程的效果。
- 闭包可以保持状态,因为它们可以访问外部函数作用域的变量。
示例代码:
function outerFunction(x) { let count = 0 function innerFunction() { // 内部函数引用了外部函数的变量 count = count + x console.log(count); } return innerFunction; } const closureFunc = outerFunction(10); // 将返回的内部函数保存在变量中 closureFunc(); // 输出:10 closureFunc(); // 输出:20 closureFunc(); // 输出:30
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程