iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript 函数闭包的含义和作用是什么
  • 992
分享到

JavaScript 函数闭包的含义和作用是什么

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

这篇文章主要讲解了“javascript 函数闭包的含义和作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript 函数闭包的含义和作用

这篇文章主要讲解了“javascript 函数闭包的含义和作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript 函数闭包的含义和作用是什么”吧!

一、全局变量

一个函数可以访问所有定义在函数 内部 的变量。

function myFunction() {     var a = 4;     return a * a; }

JavaScript 函数闭包的含义和作用是什么

但是函数也可以访问定义在函数 之外 的变量。

var a = 4; //全局变量 function myFunction() {    return a * a;  }

JavaScript 函数闭包的含义和作用是什么

第一个例子中,a是一个局部变量.。局部变量只能在定义的函数内使用。

全局变量可以被页面(和窗口)中所有脚本使用(和更改),具有相同名称的全局变量和局部变量是不同的变量。修改一个,不修改其他。

没有关键字var创建的变量,总是全局的,即使是在函数中创建的。

二、变量的生命周期

全局变量只要应用程序(窗口/网页)存在,它就存在。

局部变量生命周期较短。它们在函数被调用时被创建,当函数完成时被删除。

三、为什么需要闭包?

假设要使用一个变量来计数某物,并且希望该计数器可用于所有函数。可以使用一个全局变量和一个增加计数器的函数。这个时候就需要闭包。

案例:一个计数器

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>项目</title> </head> <body style="background-color: aqua;"> <p>使用全局变量计数</p>  <button type="button" onclick="myFunction()">计数!</button>  <p id="demo">0</p>  <script> var counter = 0;  function add() { return counter += 1; }  function myFunction() { document.getElementById("demo").innerHTML = add();        }  </script> </body> </html>

JavaScript 函数闭包的含义和作用是什么

注:

计数器只被add()函数改变。问题是,页上的任何脚本可以改变计数器,无需调用add(),如果在函数中声明计数器,没有调用的时候,没有人能改变它  add()。

function add() {    var counter = 0; //局部变量    counter += 1; }  add(); add(); add();  // the counter should now be 3, but it does not work !

JavaScript 函数闭包的含义和作用是什么

每次都要调用add()函数,计数器被设置为1。

四、JavaScript嵌套函数

所有函数都可以访问全局作用域。

事实上,在JavaScript中,所有函数都能访问它们外部的变量。JavaScript支持嵌套函数. 嵌套函数可以访问它们 上面(外部)  的作用域。

实例中, 内部函数 plus() 在父函数中可以访问 counter 变量。

function add() {    var counter = 0;    function plus() {counter += 1;}    plus();        return counter; }

完整代码:

<!DOCTYPE html> <html> <title>项目</title>  <body style="background-color: aqua;">  <h3> JavaScript嵌套函数</h3>  <p id="output"></p>  <script> function outer() { var counter = 0;  function inner() { counter++; } inner(); return counter; }  document.getElementById("output").innerHTML = `计数器是: ${outer()}`; </script>  </body> </html>

JavaScript 函数闭包的含义和作用是什么

如果能从外部调用plus()函数,这可能已经解决了计数器的困境,还需要找到一种方法来执行 counter = 0 只执行一次,需要闭包。

五、JavaScript 闭包

自调用函数

变量add被分配了自调用函数的返回值,自调用函数只运行一次. 它将counter设置为零(0),并返回函数表达式。

var add = (function () {    var counter = 0;    return function () {return counter += 1;} })();  add(); add(); add();  // the counter is now 3

这样 add 变成了一个函数. "精彩的" 部分是它可以在父作用域中访问counter。

JavaScript 函数闭包的含义和作用是什么

注:

这就是所谓的 JavaScript 闭包, 它使函数有“私有”变量成为可能。counter受匿名函数的作用域保护, 并且只能使用add函数修改。

六、总结

本文基于JavaScript基础。从函数的基本概念,(变量和全局 )。函数为什么需要闭包,使用闭包可以让私有变量成为可能。通过案例(计数器)的讲解,  以及对嵌套函数中闭包的应用能够更好的理解。

丰富的效果图的展示,能够帮助更好的去理解闭包这一概念。

感谢各位的阅读,以上就是“JavaScript 函数闭包的含义和作用是什么”的内容了,经过本文的学习后,相信大家对JavaScript 函数闭包的含义和作用是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JavaScript 函数闭包的含义和作用是什么

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

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

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

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

下载Word文档
猜你喜欢
  • JavaScript 函数闭包的含义和作用是什么
    这篇文章主要讲解了“JavaScript 函数闭包的含义和作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript 函数闭包的含义和作用...
    99+
    2024-04-02
  • JavaScript(函数,作用域和闭包)
    目录 一,什么是函数1.1,常用系统函数1.2,函数声明 1.3,函数表达式二,预解析2.1,函数自调用 2.2,回调函数三,变量的作用域3.1,隐式全局变量 四,作用域与块级作用...
    99+
    2023-09-05
    前端 javascript 开发语言
  • JavaScript 对象的含义和作用是什么
    本篇内容介绍了“JavaScript 对象的含义和作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • Javascript闭包的作用是什么
    本篇内容主要讲解“Javascript闭包的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Javascript闭包的作用是什么”吧!对于初学者来说,理...
    99+
    2024-04-02
  • 在JavaScript函数中什么是闭包
    本篇内容介绍了“在JavaScript函数中什么是闭包”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!匿名函...
    99+
    2024-04-02
  • php中闭包函数的作用是什么
    这篇文章给大家分享的是有关php中闭包函数的作用是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是闭包函数:在子函数内部使用通过use关键字使用父函数的变量,这种方式就是闭包函数格式:function&n...
    99+
    2023-06-15
  • JavaScript中Set的含义和用法是什么
    本篇内容介绍了“JavaScript中Set的含义和用法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • C++ lambda 表达式中闭包的含义是什么?
    在 c++++ 中,闭包是能够访问外部变量的 lambda 表达式。要创建闭包,请捕获 lambda 表达式中的外部变量。闭包提供可复用性、信息隐藏和延迟求值等优势。它们在事件处理程序等...
    99+
    2024-04-17
    闭包 lambda c++ 作用域 封装性
  • php array函数的含义是什么
    在PHP中,array函数用于创建一个数组。它接受任意数量的参数,并将它们作为数组的元素来创建一个新的数组。array函数的语法如下...
    99+
    2023-10-10
    PHP
  • JavaScript闭包和作用域链的定义实现
    目录引言闭包的定义和实现作用域链闭包和作用域链的关系使用闭包的注意事项结论引言 在JavaScript中,每个函数都有自己的作用域。作用域规定了哪些变量和函数可以在当前函数内部访问。...
    99+
    2023-05-20
    JavaScript闭包作用域链 JavaScript作用域链
  • CSS伪类的含义和作用是什么
    本篇内容主要讲解“CSS伪类的含义和作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS伪类的含义和作用是什么”吧!你对CSS伪类的概念和作用是否熟悉...
    99+
    2024-04-02
  • JavaScript Hoisting的含义是什么
    JavaScript Hoisting是指在代码执行前,JavaScript引擎会将变量和函数的声明从其作用域中的顶部移动到顶部,无...
    99+
    2023-10-12
    JavaScript
  • JavaScript 函数的闭包是怎样的
    JavaScript 函数的闭包是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 前言我们知道,作用域链查找标识符的顺序是从当前作用域开始一级一级往上查找。...
    99+
    2023-06-16
  • PHP函数中true的含义是什么?
    在PHP中,true是一个布尔值,代表真或者是成立的意思。在函数中,通常用true表示函数执行成功或者返回正确的结果。下面将通过示例代码来解释在PHP函数中true的含义。 首先,我们...
    99+
    2024-03-15
    返回值
  • python中eval函数的含义是什么
    eval函数是一个内建函数,用于将字符串作为代码执行。它将字符串作为参数,并在全局或局部命名空间中执行字符串中的Python表达式,...
    99+
    2023-10-22
    python
  • javascript闭包的概念和作用
    这篇文章主要讲解了“javascript闭包的概念和作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript闭包的概念和作用”吧!1 闭包--...
    99+
    2024-04-02
  • JavaScript对象的含义是什么
    JavaScript对象是一种复合数据类型,用于存储和组织多个值的集合。它可以包含属性和方法,每个属性都由一个键和一个对应的值组成。...
    99+
    2023-10-11
    JavaScript
  • javascript中double的含义是什么
    这篇文章主要讲解了“javascript中double的含义是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript中double的含义是什...
    99+
    2024-04-02
  • javascript中闭包有什么作用
    本篇内容介绍了“javascript中闭包有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是闭...
    99+
    2024-04-02
  • JavaScript闭包closure有什么作用
    本篇内容主要讲解“JavaScript闭包closure有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript闭包closure有什么作用”吧!一、什么是闭包闭包(clos...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作