js利用闭包实现打车小案例
思路:封装函数,定义起步价格,总价,return两个函数 调用时变量.函数名然后传递值,两个函数分别为正常价格和特殊请求例如拥堵。 正常情况 判断传递的公里数小于等于3就返回定义的起步价13,否则 返回 起步价+ 公里数-3 5 这个公式是当前公里数5每公里数,最后再return 判断完的值即可 如果特殊情况:调用拥堵的函数,传递值为true就是拥堵当前价格+10否则原价,利用三元判断即可。
需求:
案例:打车起步13(3公里)之后一公里增加5元,用户输入公里数后计算打车价
格特殊情况:总价额外收10元/拥堵费
代码
// 案例:打车起步13(3公里)之后一公里增加5元,用户输入公里数后计算打车价格
// 特殊情况:总价额外收10元/拥堵费
// 变量 =(封装的函数)
var car = (function out(){
var start = 13//起步价格
var total = 0//总价
// return 两个封装的匿名函数 以对象的形式声明的匿名函数或属性名属性值
return{
// 正常价格
price:function(n){
// n 是传递过来的这个公里数
// 判断公里数小于或等于3公里价格就为13元
if(n<=3){
total = start
}else{
// 否则 起步价 + (公里数-3=多余的公里数)*5 增加的5元
total = start+(n-3)*5
}
// 判断完成后 返回start是当前的价格
return total
},
// 如果特殊情况,拥堵了 就3元↓表达式
yd:function(flag){
// 如果为拥堵就是true,+10 否则 原价
return flag ? total +10 : total
}
}
})()
// 3公里以内都是13元 4公里+5 = 18元
console.log(car.price(4));
// 如果拥堵状态为ture就+10 28
console.log(car.yd(true));