闭包的应用一:点击li打印出当前小li的索引号
for(var i=0;i<lis.length;i++){
(function(i){
lis[i].onclick=function(){
console.log(i);
}
})(i)
}
思路:首先要获取li元素,其次yongfor循环将li遍历出来然后给每个小li绑定一个立即执行函数,并将i传递出来
3秒钟之后打印li里面的所有内容
for(var i=0;i<lis.length;i++){
(function(i){
setTimeout(function(){
console.log(lis[i].innerText);
},3000)
})(i)
核心思路还是利用了立即函数的闭包将变量i传递然后在利用定时器函数将lis[i]的值进行打印
计算打车的价格
需求:打车的起步价为13(3公里内),之后每多一公里增加5元,用户输入公里数都可以计算出打车的价格‘,如果有拥堵情况,总价格会多收取10元的拥堵费
思路:首先要声明两个变量,起步价和总价
两个函数:正常的总价,拥堵的价格
var car=(function(){
var start=13;
var total=0;
return{
price:function(n){
if(n<=3){
return total=start;
}
else{
return total=start+(n-3)*5
}
return total;
},
yd:function(flag){
return flag?total+10:total
}
}
})()
console.log(car.price(3));
console.log(car.yd(true));