前言
很多人都听说过闭包,甚至都接触过它,但让你准确地说出闭包是什么或者原理是什么,就突然间错愕了
闭包是指有权访问另一个函数作用域中变量的函数。
主要作用
延伸了变量的作用范围;函数封装私有变量
经典例子
-
循环点击事件、立即执行函数——小闭包
var lis=document.querySelector("ul").querySelectorAll("li") for(var i=0;i<lis.length;i++){ (function(i){ lis[i].onclick=function(){ console.log(i); } })(i) }
由于是代表闭包的例子,事实上如果用
let
定义i
,则不需要进行闭包,这里闭包的作用就相当于延伸了i
的作用范围for(let i=0;i<lis.length;i++){ lis[i].onclick=function(){ console.log(i); } }
-
函数的私有变量以及防止变量污染
var Person=(function(){ var name="JJ" function getName(){ return name; } return getName; })() console.log(Person());