什么是闭包?
var local = '变量'
function foo(){
console.log(local)
}
这就是一个闭包
闭包常常用来「间接访问一个变量」。换句话说,「隐藏一个变量」。
什么是立即执行函数?
以一个著名的面试题为例:
var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
liList[i].onclick = function(){
alert(i) // 为什么 alert 出来的总是 6,而不是 0、1、2、3、4、5
}
}
var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
!function(ii){
liList[ii].onclick = function(){
alert(ii) // 0、1、2、3、4、5
}
}(i)
}
用法:(function(){})()、(function(){}())类似这样
用途:封装功能不污染全局变量
网友评论