【学习 JavaScript】 JavaScript 教程 JavaScript 简介 JavaScript 用法 JavaScript Chrome 中运行 JavaScript 输出 JavaScript 语法 JavaScript 语句 JavaScript 注释 JavaScript 变量 JavaScript 数据类型 JavaScript 对象 JavaScript 函数 JavaScript 作用域 JavaScript 事件 JavaScript 字符串 JavaScript 字符串模板 JavaScript 运算符 JavaScript 比较 JavaScript 条件语句 JavaScript switch 语句 JavaScript for 循环 JavaScript while 循环 JavaScript break 和 continue 语句 JavaScript typeof JavaScript 类型转换 JavaScript 正则表达式 JavaScript 错误 JavaScript 调试 JavaScript 变量提升 JavaScript 严格模式 JavaScript 使用误区 JavaScript 表单 JavaScript 表单验证 JavaScript 验证 API JavaScript 保留关键字 JavaScript this JavaScript let 和 const JavaScript JSON JavaScript void JavaScript 异步编程 JavaScript Promise JavaScript 代码规范 JS 函数 JavaScript 函数定义 JavaScript 函数参数 JavaScript 函数调用 JavaScript 闭包 JS 类 JavaScript 类 JavaScript 类继承 JavaScript 静态方法 JS HTML DOM DOM 简介 DOM HTML DOM CSS DOM 事件 DOM EventListener DOM 元素 HTMLCollection 对象 NodeList 对象 JS 高级教程 JavaScript prototype JavaScript Number 对象 JavaScript String JavaScript Date(日期) JavaScript Array(数组) JavaScript Boolean(布尔) JavaScript Math(算数) JavaScript RegExp 对象 JS 浏览器BOM JavaScript Window JavaScript Window Screen JavaScript Window Location JavaScript Window History JavaScript Navigator JavaScript 弹窗 JavaScript 计时事件 JavaScript Cookie JS 库 JavaScript 库 JavaScript 测试 jQuery JavaScript 测试 Prototype JS 实例 JavaScript 实例 JavaScript 对象实例 JavaScript 浏览器对象实例 JavaScript HTML DOM 实例 JavaScript 总结 JS 参考手册

JavaScript 闭包学习笔记

在JavaScript中,闭包是一个非常重要的概念。这个概念用于描述一个函数可以访问它外部的变量,即使在函数执行完毕后也能保留这些变量的值。

什么是闭包?

闭包指的是一个函数能够访问它创建时所处的词法作用域之外的变量。在JavaScript中,每个函数都是一个闭包。当一个函数定义了内部函数时,内部函数可以访问其父函数的变量,即使该父函数已经返回并销毁了。这种方式被称为“闭包”。

闭包的实例

以下是一个简单的闭包实例:

Copy Code
function outerFunction() { var outerVariable = "Hello, "; function innerFunction(name) { console.log(outerVariable + name); } return innerFunction; } var innerFunc = outerFunction(); innerFunc("world"); // 输出 "Hello, world"

在这个例子中,outerFunction 定义了 innerFunctioninnerFunction 可以访问 outerFunction 中的 outerVariable ,这是因为 innerFunction 创建时保存了变量的引用。所以,即使 outerFunction 已经返回并且销毁,但 innerFunction 仍然可以访问它的变量。

结论

在JavaScript中使用闭包可以很方便地创建私有变量和方法。闭包使得函数可以访问它创建时的作用域外的变量,这样可以避免全局命名冲突并且保护变量不被随意更改。充分理解和掌握闭包会大大提高JavaScript开发的能力。