有什么网站建设比较好的公司,wordpress 上传到七牛,软件项目管理经典案例20篇,网站建设案例行业现状一、什么是闭包 概念#xff1a;闭包还是作用域的一种特殊应用 二、触发闭包的情况 1.函数当做返回值被返回 2.函数当做参数被传递 3.自执行匿名函数 //情况1#xff1a;函数当做返回值被返回
function fn(){const a 1;return function(){console.log(a) //1};
}
const a …一、什么是闭包 概念闭包还是作用域的一种特殊应用 二、触发闭包的情况 1.函数当做返回值被返回 2.函数当做参数被传递 3.自执行匿名函数 //情况1函数当做返回值被返回
function fn(){const a 1;return function(){console.log(a) //1};
}
const a 5;
const cb fn();
cb();//会在定义的最近的上一层寻找
//情况2函数当做参数传递
function fn(cb){const a 100;cb()
}const a 500;
fn(function(){console.log(a); //500
});//在定义的最近的外一层寻找
//情况3自执行匿名函数
(function(index){console.log(index); //10
})(10);
三、闭包的应用 1.隐藏变量 2.解决for i 的问题 我们想要实现点击第一个button出现0点击第二个出现1依次类推
使用自执行函数
!DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title
/head
bodybutton0/buttonbutton1/buttonbutton2/buttonbutton3/buttonbutton4/button
/body
scriptconst aBtn document.getElementsByTagName(button)for(var i 0; i aBtn.length;i){(function(index){aBtn[i].onclick function(){console.log(index)}})(i)}
/script
/html 公司中是这么写的因为let是块级作用域每次执行i都会保存起来 const aBtn document.getElementsByTagName(button)for(let i 0; i aBtn.length;i){aBtn[i].onclick function(){console.log(i)}}