JavaScript 学习手册

免费学习 完整知识体系 快速检索

JavaScript学习手册《闭包(Closure)》:闭包是指函数可以记住并访问其定义时的作用域,即使该函数在外部执行。 **核心:** 内部函数可以访问外部函数的变量,并且这些变量会持续存在。 ```javascript function createCounter() { le...

函数

闭包(Closure)

【详细说明 & 代码示例】
闭包是指函数可以记住并访问其定义时的作用域,即使该函数在外部执行。 **核心:** 内部函数可以访问外部函数的变量,并且这些变量会持续存在。 ```javascript function createCounter() { let count = 0; return function() { count++; return count; }; } const counter = createCounter(); console.log(counter()); // 1 console.log(counter()); // 2 ``` **使用场景:** - 数据私有化(封装) - 函数工厂 - 事件处理器中保留状态 - 防抖、节流 **注意:** 闭包可能导致内存泄漏,因为外部函数的变量不会被垃圾回收,直到闭包本身被销毁。 **经典示例:** ```javascript for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); // 输出 5 个 5 }, 100); } // 使用闭包修复 for (var i = 0; i < 5; i++) { (function(j) { setTimeout(function() { console.log(j); }, 100); })(i); } // 或者使用 let(块级作用域) for (let i = 0; i < 5; i++) { setTimeout(() => console.log(i), 100); } ```

学习提示:建议打开浏览器开发者工具(F12)中的 Console 面板,直接运行代码片段,实时查看输出,加深理解。

全部章节目录(共 48 个知识点)

JavaScript 基础 (1个知识点)

字符串 (1个知识点)

日期与时间 (1个知识点)

错误处理 (1个知识点)

BOM 操作 (1个知识点)

异步编程 (1个知识点)

Promise (1个知识点)

async/await (1个知识点)

Ajax 与请求 (1个知识点)

模块化 (1个知识点)

(1个知识点)

闭包 (1个知识点)

作用域 (1个知识点)

正则表达式 (1个知识点)

框架与库基础 (2个知识点)

使用说明

  • • 本手册涵盖 JavaScript 从基础到 ES6+ 及 Web API 的完整知识体系
  • • 在搜索框输入关键词,快速定位相关知识点
  • • 点击条目标题进入详情页,查看详细说明与代码示例
  • • 页面按分类展示所有知识点,方便系统性学习
  • • 建议打开浏览器开发者工具(F12)的 Console 面板运行代码,加深理解