javascript闭包的缓存应用

function eater () {
                    var food = "apple";
                    var obj = {
                        eat : function () {
                            if (food != "") {
                                console.log("i'm eating" + " " + food)
                                food = "";
                            }else {
                                console.log('there is nothing');
                            }
                        },
                        push : function (myFood) {
                            food = myFood;
                        }
                    }
                    return obj;
                }
                var eater1 = eater();
                eater1.eat();
                eater1.eat();
                eater1.push('banana');
                eater1.eat();

“eat”函数与“push”函数保存出来的“作用域”,因为这两个函数处于同级情况,return到了外部,形成闭包,并且没有自身定义的数据,作用域完全相同且相通,在此情况下修改food的值,eat函数和push函数是共同保存该值的.         类似于直接在全局中定义一个数字值,逐句修改该值,最后打印出来的是最后一次修改的值.

posted @ 2019-11-28 16:26  另一场风花雪月  阅读(126)  评论(0)    收藏  举报