js-闭包

作者: TinkleJane | 来源:发表于2019-03-15 00:36 被阅读0次

今天学习的概念是闭包
一般的计数器需要借助全局变量

var counter = 0; //全局变量
function add() {
return counter += 1;
}
add();
add();
add();

结果是3
然而这样做有一个特别大的缺点,即因为全局变量是每个方法里都可以调用,所以可能产生不确定的变化,有什么方法可以避免呢?那就要用到闭包了
闭包长什么样?下面是一个闭包计数器,每执行一次add(),且只有执行add()才会计数,且步长是1

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

计数器受匿名函数的作用域保护,只能通过 add 方法修改。
函数的返回值是函数,因为嵌套函数的特点是,自函数可以调用父函数的局部变量,所以闭包就有下面两个用处:
1.读取函数内部的变量;
2.这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除。
另外注意:闭包的返回函数不要引用任何循环变量,或者后续会发生变化的变量。
此外:
闭包返回值是函数原型,所以具有延迟执行的特点。
闭包还可以把多参数的函数变成单参数的函数。

相关文章

  • js-闭包

    对于闭包的理解,一直很浅懂,特别有时候跟匿名函数混淆。所以收集下面各路对于闭包的讲解。 维基百科中的解释:“在计算...

  • js-闭包

  • Js-闭包

    「闭包」 要理解什么闭包,首先要知道闭包为啥出现,实际代码中,我们想在某一的作用域中使用一个变量,很简单,直接在外...

  • js-闭包

    为什么写闭包: 1.被人说复杂,想整清晰.其实很好理解. 2.闭包在开发中用途很多.面试经常问,必须弄懂. 为什么...

  • JS-闭包

    一、闭包简介1、函数内部的函数可以生成闭包2、闭包的应用:需要多个内部变量值3、闭包弊端闭包:会倒致函数运行结束后...

  • js-闭包

    了解闭包前,先了解变量:局部变量和全局变量。 接下来的问题是,如何从外部获取局部变量: 如上,f5可以读取f4中的...

  • JS-闭包

    0.闭包 理解闭包的关键在于:外部函数调用之后其变量对象本应该被销毁,但闭包的存在使得我们仍旧可以访问外部函数的变...

  • js-闭包

    今天学习的概念是闭包一般的计数器需要借助全局变量 var counter = 0; //全局变量function ...

  • JS-闭包

    了解闭包前,首先要知道声明是变量作用域变量根据作用域的不同分为两种:全局变量和局部变量。1.函数内部可以使用全局变...

  • JS-读懂闭包

    长久以来,闭包是前端同学面试必考的问题。会用闭包也成了高级前端开发者的标志,今天就来彻底弄清楚闭包的每一个细节。 ...

网友评论

      本文标题:js-闭包

      本文链接:https://www.haomeiwen.com/subject/ceghmqtx.html