1.闭包
闭包(closure)指有权访问另一个函数作用域中变量的函数。
闭包的主要作用:延伸了变量的作用范围
2.练习
- 点击li打印当前索引号
- 3秒后打印li内容
for(let i = 0; i < lis.length; i++){
(function(i){
setTimeout(function(){
console.log(lis[i].innerHTML)
},3000)
})(i)
}
// ()()立即执行函数
// 异步任务(不会立即执行,把函数放到任务队列里):回调函数,定时器的回调函数,事件中的回调函数,ajax中的回调函数
- 计算打车价格
// 打车起步价13元(3公里),超出后5元/公里,用户输入公里数就可以计算出打车价格 // 如果出现拥堵现象,在多加10元 var car = (function(){ var start = 13; //起步价 var total = 0; //总价 return { price: function(n){ if (n <= 3) { total = start } else{ total = start + (n - 3) * 5 } return total }, yd: function(flag){ return flag ? total + 10 : total; } } })() console.log(car.price(3)) //13 console.log(car.yd(true)) //23 console.log(car.price(7)) //33 console.log(car.yd(true)) //43