iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >JavaScript中闭包的使用
  • 428
分享到

JavaScript中闭包的使用

2024-04-02 19:04:59 428人浏览 安东尼
摘要

本篇内容介绍了“javascript中闭包的使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通过深入了解

本篇内容介绍了“javascript中闭包的使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!


通过深入了解 JavaScript 的高级概念之一:闭包,更好地理解 JavaScript 代码的工作和执行方式。

在《JavaScript 如此受欢迎的 4 个原因》中,我提到了一些高级 JavaScript 概念。在本文中,我将深入探讨其中的一个概念:闭包closure

根据 Mozilla 开发网络(MDN),“闭包是将一个函数和对其周围的状态(词法环境)的引用捆绑在一起(封闭)的组合。”简而言之,这意味着在一个函数内部的函数可以访问其外部(父)函数的变量。

为了更好地理解闭包,可以看看作用域及其执行上下文。

下面是一个简单的代码片段:

var hello = "Hello"; function sayHelloWorld() {    var world = "World";    function wish() {        var year = "2021";        console.log(hello + " " + world + " "+ year);    }    wish();}sayHelloWorld();

下面是这段代码的执行上下文:

JavaScript中闭包的使用

js 代码的执行上下文

每次创建函数时(在函数创建阶段)都会创建闭包。每个闭包有三个作用域。

  • 本地作用域(自己的作用域)

  • 外部函数范围

  • 全局范围

我稍微修改一下上面的代码来演示一下闭包:

var hello = "Hello"; var sayHelloWorld = function() {    var world = "World";    function wish() {        var year = "2021";        console.log(hello + " " + world + " "+ year);    }    return wish;}var callFunc = sayHelloWorld();callFunc();

内部函数 wish() 在执行之前就从外部函数返回。这是因为 JavaScript 中的函数形成了闭包

  • 当 sayHelloWorld 运行时,callFunc 持有对函数 wish 的引用。

  • wish 保持对其周围(词法)环境的引用,其中存在变量 world

私有变量和方法

本身,JavaScript 不支持创建私有变量和方法。闭包的一个常见和实用的用途是模拟私有变量和方法,并允许数据隐私。在闭包范围内定义的方法是有特权的。

这个代码片段捕捉了 JavaScript 中闭包的常用编写和使用方式:

var resourceRecord = function(myName, myAddress) {    var resourceName = myName;    var resourceAddress = myAddress;    var accessRight = "HR";    return {        changeName: function(updateName, privilege) {            // only HR can change the name            if (privilege === accessRight ) {                resourceName = updateName;                return true;            } else {                return false;            }        },          changeAddress: function(newAddress) {            // any associate can change the address            resourceAddress = newAddress;                  },          showResourceDetail: function() {            console.log ("Name:" + resourceName + " ; Address:" + resourceAddress);        }    }}// Create first recordvar resourceRecord1 = resourceRecord("Perry","Office");// Create second recordvar resourceRecord2 = resourceRecord("Emma","Office");// Change the address on the first recordresourceRecord1.changeAddress("Home");resourceRecord1.changeName("Perry Berry", "Associate"); // Output is false as only an HR can change the nameresourceRecord2.changeName("Emma Freeman", "HR"); // Output is true as HR changes the nameresourceRecord1.showResourceDetail(); // Output - Name:Perry ; Address:HomeresourceRecord2.showResourceDetail(); // Output - Name:Emma Freeman ; Address:Office

资源记录(resourceRecord1 和 resourceRecord2)相互独立。每个闭包通过自己的闭包引用不同版本的 resourceName 和 resourceAddress 变量。你也可以应用特定的规则来处理私有变量,我添加了一个谁可以修改 resourceName 的检查。

使用闭包

理解闭包是很重要的,因为它可以更深入地了解变量和函数之间的关系,以及 JavaScript 代码如何工作和执行。

“JavaScript中闭包的使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: JavaScript中闭包的使用

本文链接: https://www.lsjlt.com/news/73616.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中闭包的使用
    本篇内容介绍了“JavaScript中闭包的使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通过深入了解...
    99+
    2024-04-02
  • JavaScript中的闭包closure怎么使用
    这篇文章主要介绍“JavaScript中的闭包closure怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript中的闭包closure怎么使用”文章能帮助大家解决问题。闭包简述...
    99+
    2023-07-02
  • JavaScript中的闭包
    一.什么是闭包 1.闭包的定义 闭包并不是JS特有的,因此可以从两个角度定义闭包。 1)计算机科学中 闭包又称为词法闭包(在进行词法分析的时候这个闭包就确定了),或者是函数闭包。是在支持头等函数的编程语言中(意思是函数作为一等公民的编程语言...
    99+
    2023-08-18
    javascript 前端 java
  • JavaScript中闭包怎么用
    这篇文章将为大家详细讲解有关JavaScript中闭包怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。闭包真的是学过一遍又一遍,Js博大精深,每次学习都感觉有新的收获...
    99+
    2024-04-02
  • Javascript中的闭包有什么用
    这篇文章给大家介绍Javascript中的闭包有什么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。var array = []; array.lengt...
    99+
    2024-04-02
  • JavaScript中闭包的简单应用
    这篇文章主要讲解了“JavaScript中闭包的简单应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中闭包的简单应用”吧!闭包定义在J...
    99+
    2024-04-02
  • JavaScript 中的作用域与闭包
    目录一、JavaScript 是一门编译语言1.1 传统编译语言的编译步骤1.2 JavaScript 与传统编译语言的区别二、作用域(Scope)2.1 LHS查询 和 RHS查询...
    99+
    2024-04-02
  • JavaScript中闭包有什么用
    这篇文章主要介绍JavaScript中闭包有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 什么是闭包闭包:函数本身和该函数声明时所处的环境状态的组合。也就是说函数不在其定义的环境中被调用,也能访问定义时所...
    99+
    2023-06-25
  • JavaScript中怎么应用闭包
    JavaScript中怎么应用闭包,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是闭包(Closure)简单讲,闭包就是指有权访问另一...
    99+
    2024-04-02
  • JavaScript中闭包的作用有哪些
    JavaScript中闭包的作用有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释...
    99+
    2023-06-14
  • JavaScript中的闭包是怎样的
    这篇文章给大家介绍JavaScript中的闭包是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 闭包的概念来看一般函数的执行和启发:function stop() {  ...
    99+
    2023-06-22
  • javascript中闭包有什么作用
    本篇内容介绍了“javascript中闭包有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是闭...
    99+
    2024-04-02
  • 闭包的谜题:剖析 JavaScript 闭包中的常见问题
    闭包通过在内部函数中引用外部变量来捕获变量。当外部函数返回时,内部函数仍然可以访问这些外部变量,即使外部函数本身已被销毁。 问题 2:闭包的陷阱是什么? 内存泄漏:如果闭包持有对外部变量的引用,而外部变量又引用了一些大型对象,则即使外部函...
    99+
    2024-03-14
    闭包
  • Javascript闭包使用场景的原理分析
    这篇文章给大家分享的是有关Javascript闭包使用场景的原理分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、闭包Javascript中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部...
    99+
    2023-06-25
  • JavaScript闭包原理与使用介绍
    目录1. 认识闭包2. 变量的作用域和生命周期2.1 变量的作用域2.2 变量的生命周期3. 闭包的概念及其作用3.1 闭包的概念3.2 闭包的应用3.2.1 保存私有变量3.2.2...
    99+
    2022-11-13
    JavaScript闭包 JS闭包
  • JavaScript中什么是闭包
    这篇文章给大家介绍JavaScript中什么是闭包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 一 、词法定义域 LexicalClosure闭包是编程语言Lexical ...
    99+
    2024-04-02
  • Javascript闭包的作用与使用方法浅析
    目录一、变量的作用域二、如何从外部读取局部变量js 闭包(closure)是Javascript语言的一个难点,也是它的特色。 闭包的作用:通过一系方法,将函数内部的变量(局部变量)...
    99+
    2023-01-18
    JavaScript闭包 JS闭包
  • javascript中什么指的是闭包
    这篇文章主要为大家展示了“javascript中什么指的是闭包”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript中什么指的是闭包”这篇文章吧。 ...
    99+
    2024-04-02
  • 闭包的陷阱:识别和避免 JavaScript 闭包中的缺陷
    闭包是一种强大的 JavaScript 特性,它允许内部函数访问其创建作用域中的变量。然而,闭包的滥用可能会导致各种陷阱。 1. 内存泄漏 闭包对外部变量的引用会阻止垃圾回收机制释放这些变量,从而导致内存泄漏。例如: function c...
    99+
    2024-03-15
    闭包
  • 一文详解JavaScript中的闭包
    JavaScript 闭包是一种重要的概念,在 JavaScript 编程中被广泛使用。尽管它可能会让初学者感到困惑,但它是理解 JavaScript 语言核心的关键概念之一。本文将深入探讨 JavaScript 闭包,让你了解它是如何工作...
    99+
    2023-05-14
    闭包 前端 JavaScript
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作