了解 JavaScript 闭包:综合指南

了解 javascript 闭包:综合指南

了解 javascript 闭包:综合指南。

什么是闭包?

闭包是一个基本的 javascript 概念,其中内部函数可以访问其外部(封闭)函数的变量和参数,即使在外部函数完成执行之后也是如此。简而言之,闭包允许函数“记住”并访问其外部作用域中的变量,即使该函数在不同的作用域中执行也是如此。

闭包的三个范围

javascript 中的每个闭包都可以访问三个作用域:

它自己的作用域(函数内部定义的变量)外部函数的变量(来自其父函数的变量)全局变量(整个应用程序中可用的变量)

词汇范围:基础

让我们通过一个基本示例来了解词法作用域:

function init() {  var name = "mozilla"; // local variable created by init  function displayname() {    // inner function    console.log(name); // uses variable declared in parent function  }  displayname();}init();

登录后复制

在此示例中:

init() 函数创建一个局部变量名称和一个内部函数 displayname()displayname() 是一个内部函数,仅存在于 init()displayname() 没有自己的局部变量由于词法作用域,它可以访问其父作用域中的变量,包括名称

理解行动中的闭包

让我们看一下演示闭包的稍加修改的版本:

function makefunc() {  const name = "mozilla";  function displayname() {    console.log(name);  }  return displayname;}const myfunc = makefunc();myfunc();

登录后复制

理解要点:

立即学习“Java免费学习笔记(深入)”;

这看起来与前面的示例类似,但有一个关键的区别我们不是立即执行内部函数,而是返回它即使 makefunc() 已经执行完毕,myfunc 仍然可以访问 name 变量这是可能的,因为该函数维护对其词法环境的引用

实例:函数工厂

这里有一个更实际的例子,展示了闭包的威力:

function makeAdder(x) {  return function(y) {    return x + y;  };}const add5 = makeAdder(5);const add10 = makeAdder(10);console.log(add5(2));  // outputs 7console.log(add10(2)); // outputs 12

登录后复制

让我们来分析一下发生了什么:

makeadder 是一个函数工厂 – 它创建自定义函数它创建的每个函数都会记住传递给 makeadder 的 x 值add5 和 add10 都是闭包:

它们共享相同的函数定义但他们有不同的词汇环境在add5的环境中,x是5在add10的环境中,x是10

为什么闭包很重要

闭包非常强大,因为它们允许:

数据隐私:闭包内的变量保持私有,无法从外部访问状态保存:它们可以在函数调用之间维护状态函数工厂:您可以使用预设参数创建专门的函数模块模式:它们是 javascript 中模块模式的基础

结论

理解闭包对于 javascript 开发人员来说至关重要,因为它们在现代 javascript 模式、框架和库中广泛使用。它们提供了一种在函数式编程中创建私有变量和维护状态的方法,同时保持代码整洁和可维护。

记住: 闭包不仅仅是另一个函数内的函数 – 它是一个可以访问其外部作用域中的变量的函数,并且即使在外部函数完成执行后也能保持该访问权限。

以上就是了解 JavaScript 闭包:综合指南的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2657666.html

(0)
上一篇 2025年3月7日 10:10:03
下一篇 2025年2月24日 00:49:47

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论