什么是闭包?
闭包是可以访问其定义的“外部”范围的函数,因此,即使闭包函数终止,它也可以访问外部作用域中的值。
例子:
function takeOne(){ let i = 0; return function incrementFunction(){ return i++; } }
上面的代码表示一个函数返回另一个函数。但是,调用takeOne并获取后incrementFunctioon,即使已经终止incrementFunction,takeOne也会记住局部变量takeOne。
使用闭包的好处
闭包的第一个好处就是将局部变量保留在范围内。由于JavaScript函数是一等公民,因此开发人员经常会遇到名称冲突,这将倒是意外输出。使用闭包可以帮助将该范围内的名称空间保留为私有变量。可以在过去的jQuery代码中看到很多东西,其中定义了click方法。
$(function () { var selection = []; $('.something').click(function(){ //此闭包可以访问外部变量selections selections.push('something') //获取外部函数选择 }) })
for(var i = 0; i < 3; i++){ setTimeout (()=> console.log(i),3000); }
function printSomething(i){ setTimeout(()=>console.log(i),3000) } for(var i = 0; i < 3;i++){ printSomething(i); }
闭包的一般用例在于在异步环境中求解计算。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209602.html原文链接:https://javaforall.net
