千家信息网

怎样解析javascript的闭包

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关怎样解析javascript的闭包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是闭包:闭包是一个存在内部函数的引用关
千家信息网最后更新 2026年11月01日怎样解析javascript的闭包

今天就跟大家聊聊有关怎样解析javascript的闭包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

什么是闭包:

闭包是一个存在内部函数的引用关系。

该引用指向的是外部函数的局部变量对象(前提是内部函数使用了外部函数的局部变量)

闭包的作用:

延长外部函数变量对象的生命周期

使用闭包能够间接的从函数外部访问函数内部的私有变量

一、常见的闭包

function outer() {  var a = 1  function inner() {    console.log(a)    //1  }  inner()}outer()

二、实例详解

function createFunc() {  var result = new Array()  for (var i = 0; i < 10; i++) {    result[i] = function () {      console.log(i)    }  }  return result}var result = createFunc()result[0]() //10result[1]() //10result[2]() //10result[3]() //10result[4]() //10result[5]() //10result[6]() //10result[7]() //10

首先在代码执行前,会先创建一个全局的对象,其中包含着全局的属性,并且将其放入全局上下文作用域链顶端,并且也将其放入每一个函数的作用域链顶端。以这个例子为例。如图所示

在初始化结束后,开始执行代码,此时就会创建一个新的对象,叫做Active Object,其中放入一些参数,并且将其压入createFunc函数的作用域链中。

因为在createFunc中仍然定义函数result[i]..,所以在执行代码前,该函数会形成作用域链。

此时开始执行createFunc函数,当指向完毕后,createFunc中的作用域链表现为。如下图所示。此时result为一个数组。并且Active object已经从createFunc作用域链的顶部删除。

此时开始执行result[0](这里以result[0]为例,其他的一样),此时执行result[0]之前,应该创建一个新的Active object对象,将其放入result[0]执行作用域栈中。如图所示

此时函数执行中需要访问i,但是在active object并不存在i,所以此时需要沿着作用域链进行查找,在createFunc中找到i,并且i的值为10,所以最终打印的值都是10。在createFunc执行完毕后,其创建的对象并没有被垃圾回收掉,因为在result[0]中的i依然保持对该对象的引用。

这个例子的解决方法如下所示,就是设置一个立即执行函数,每一个下标对应的函数,都是立即执行函数,当立即执行函数执行时,每一个函数的上下文对象中都会存在为正确的下标值。

function createFunc() {  var result = new Array()  for (var i = 0; i < 10; i++) {    result[i] = (function (num) {      return function() {        console.log(num)      }    })(i)  }  return result}var result = createFunc()result[0]() //0result[1]() //1result[2]() //2result[3]() //3result[4]() //4result[5]() //5result[6]() //6result[7]() //7

JavaScript可以做什么

1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。 2.可以处理表单,检验用户的输入,并提供及时反馈节省用户时间。 3.可以根据用户的操作,动态的创建页面。 4使用JavaScript可以通过设置cookie存储在浏览器上的一些临时信息。

看完上述内容,你们对怎样解析javascript的闭包有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

函数 作用 对象 闭包 用户 变量 代码 全局 内容 上下 上下文 例子 局部 指向 顶端 如图 下标 交互性 会创 前提 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 互联网佳科技有限公司 天津摩尔互联网科技 互联网科技上市公司 融贸通互联网科技 郑州华宇互联网科技 上海卓越科技 互联网 甘肃拓世互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 厦门比较好的科技互联网公司 浙江互联网科技研学营 宜昌元轩互联网科技有限公司 未来五年的互联网科技 开一家科技互联网公司需要多少钱 佛山市拉法互联网科技有限公司 互联网第三次科技革命特征 神州科技互联网有限公司 广东鹅鹅鹅互联网科技有限公司 米泉互联网科技专业怎么样 深圳互联网科技园地址 深圳科技互联网 美国互联网科技 智网互联网科技 有马互联网科技 互联网科技作文 卓越科技(互联网 ) 美国互联网前沿科技 米聚互联网科技南京有限公司排面 互联网在线教育科技创业 下一代互联网重大应用科技园
0