说到闭包,那么什么是闭包呢?
闭包(closure):闭包是一个函数。函数内部还有一个访问了外层函数变量的一个函数就是闭包了。
闭包的作用:延伸了变量的作用范围
那么如何用闭包,点击li打印当前索引号呢?
废话不多说,直接上代码
<body>
<ul>
<li>晴天</li>
<li>园游会</li>
<li>爱的飞行日记</li>
<li>七里香</li>
<li>黑色幽默</li>
</ul>
</body>
<script>
// 获取dom元素
var lis = document.querySelector("ul").querySelectorAll("li");
// console.log(lis);
for (var i = 0; i < lis.length; i++) {
//立即执行函数
((i) => {
// 点击li 打印当前的索引号
lis[i].addEventListener("click", function () {
console.log(i);
});
})(i);
}
</script>
但是闭包也有闭包的缺点,变量得不到释放,会发生栈溢出,酌情使用~
技术交流,轻喷~