自执行函数格式
let b=8;
(function fun(s){
console.log(s);
})(b)
自执行函数以(函数(形参){}(实参)的形式
闭包
在做项目时,有时直接定义全局变量,会引起全局变量污染,采用闭包的语法形式将保护的数据存储在函数中,避免全局变量污染问题
闭包两种语法形式
<script>
function 函数A(){
let 变量a=[]
return function 函数B(){
console.log(变量a);
}
}
// 使用
const res=函数A()
res()
</script>
第二种立即执行函数
const res =(function 函数A(形参){
let 变量a=[]
return function 函数B(){
console.log(变量a);
}
})(实参)
</script>
案例:页面点击效果输出第几个li
<ul>
<li>我是第一个li</li>
<li>我是第二个li</li>
<li>我是第三个li</li>
<li>我是第四个li</li>
<li>我是第五个li</li>
<li>我是第六个li</li>
</ul>
<script>
const oUlLis = document.querySelectorAll('li')
for (let i = 0; i < oUlLis.length; i++) {
oUlLis[i].addEventListener('click', (function (index) {
return function (event) {
console.log(index);
console.log(event);
}
})(i)
)
}
</script>