js利用闭包实现打车小案例

161 阅读2分钟

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));

image.png