问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript怎么实现闭包

发布网友 发布时间:2022-04-23 01:16

我来回答

1个回答

热心网友 时间:2022-04-07 11:12

不需要实现,只需要学会使用
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。

一、变量的作用域

要理解闭包,首先必须理解Javascript特殊的变量作用域。

变量的作用域无非就是两种:全局变量和局部变量。

Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。

Js代码

  var n=999;

  function f1(){
    alert(n);
  }

  f1(); // 999

另一方面,在函数外部自然无法读取函数内的局部变量。

Js代码

  function f1(){
    var n=999;
  }

  alert(n); // error

这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!

Js代码

  function f1(){
    n=999;
  }

  f1();

  alert(n); // 999

--------------------------------------------------------------------------------------------------------

二、如何从外部读取局部变量?

出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。

那就是在函数的内部,再定义一个函数。

Js代码

  function f1(){

    n=999;

    function f2(){
      alert(n); // 999
    }

  }

在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1 就是不可见的。这就是Javascript语言特有的“链式作用域”结构(chain scope),

子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
瑞安市塘下航达汽车电器配件厂怎么样? 意尔康公司总部地址在哪里 I only wish to face the sea, with spring blossoms是什么意思 征信五级分类是什么?被纳入黑名单有什么影响? 你好,如果诈骗分子利用你隐私视频和盗取你的通讯录好友威胁你要钱的话... ...对方有我的私密照片还有通讯录,要求我给他五千,要不然就发我家人,我... ...现在已经一个月没有性生活了。但是她平时对我很好 是怎么了?_百度... 女人半年没有性生活正常吗 谁能用英语给我写一段游戏里面的征婚启事? 征婚启事用英文怎么说? 请问用wps如何自动插入题注? JS闭包是什么东西? wps/word 给同行的两个图片加题注 求助:WPS中给图片加题注,却只能显示0.1??? 什么是JS闭包?求详解 WPS word里如何给图片写题注为2-1、2-2、3-1、3-2、3-3……之类的 ,并且在目录环节引用插入表目录 理解什么是JS作用域,闭包和基本的JS作用域面试题 wps中给图片加题注,题注文字如何跟随图片移动? js 闭包逻辑面试题 前端面试:js闭包,为什么要使用闭包 梦见老鼠是什么预兆? 梦到好多老鼠在笼子里 外面有猫不出来 梦到一大群被困在笼子里的老鼠 梦见狗和老鼠被逮在一个笼子里是什么意思? 梦见捕捉到一只老鼠关进笼子里 梦见老鼠偷跑,在笼子里偷跑,一个大老鼠,一个小老鼠 我梦见老鼠吃了药,快死了.在笼子里我还打了它. 梦见一只大老鼠在笼子里面,梦见有人放了一个老鼠笼子,刚放好有一只大老鼠就钻进去了,被关在里面了 梦到好多大老鼠分别被关到笼子里,是什么意思呢 梦见老鼠被关在笼子里挨饿,请高人解答 JavaScript闭包,什么是闭包,对闭包的理解 javascript的闭包是什么意思 有什么用 WPS中插入的图片后,怎么在图片上写字或是做重点标记? javascript的闭包问题 wps 环境下,在某一章中插入图的题注,编号变成了一.1,怎么让编号变成1.1... javascript闭包问题 javascript闭包是什么? javascript闭包题目的疑惑,是怎么回事? 电脑中的WPS文字题插入图片后,怎样才能为文档中所有图片应用基于“正文”样 JavaScript的闭包问题! JS闭包的概念 JavaScript 里的闭包是什么?应用场景有哪些 JavaScript闭包的3个问题 一个javascript的闭包问题,求详细解释 JavaScript 闭包好处是什么?为什么用到闭包 华为手机型号是TlT一AL00,是华为畅享5吗 华为型号HuAWElTlT一TL00支持联通4G网络吗? 华为型号HuAWElTlT一TL00可以支持联通4G网络吗? 华为tlt-tl00怎么恢复出厂设置 华为手机tlt一al00触摸屏