zoukankan      html  css  js  c++  java
  • 关于闭包的几个思考题,值得回味!

    <script>
            // 闭包 计算打车价格
            //打车起步价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;
                    }, //正常价格
                    traffic:function(flag){
                       return flag ? total + 10 : total;
                    } //拥堵价格
                }
            })();
            console.log(car.traffic(false));
            
            console.log(car.price(5)); //23
            console.log(car.traffic(true)); //33
            
            console.log(car.price(1)); //13
            console.log(car.traffic(false)); //13
            
            
    二: 两个思考题 和解析
            var name = 'The window';
            var obj = {
                name : 'myobject',
                getNameFun:function(){
                    return function(){
                        return this.name;
                    }
                }
            }
            console.log(obj.getNameFun()()); //The window
            //  等价于 
            // var f = obj.getNameFun()
            // var f = function(){
            //     return this.name
            // }
            // f() = function(){return this.name}()  //解析为了立即执行函数,this指向window  所以返回了 The window   无闭包
            var name = 'The window';
            var obj = {
                name : 'myobject',
                getNameFun:function(){
                    var that = this;
                    return function(){
                        return that.name;
                    }
                }
            }
            console.log(obj.getNameFun()()); //打印myobject  有闭包
            //分析: var f = obj.getNameFun()
            // var that = this;
            //var f = function(){
             //   return that.name;
            //}
        </script>
  • 相关阅读:
    Tensorflow2(预课程)---2.1、多层感知器-层方式
    pandas.Series转numpy的n维数组
    numpy将多维数组降维成一维
    《仙路争锋》读书感悟---200910(为逆所以顺,为玩所以勤,为生所以死)
    legend3---解决bootstrap栅格系统自动图片高度不齐问题
    python机器学习库numpy---15、模拟e^x的麦克劳林展开式
    400G 光模块的价格
    HTML编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
    网页编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
    富文本编辑器 实现ctrl+v粘贴图片并上传、word粘贴带图片
  • 原文地址:https://www.cnblogs.com/xu3241/p/13269094.html
Copyright © 2011-2022 走看看