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
posted @   默小言  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示