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函数是共同保存该值的. 类似于直接在全局中定义一个数字值,逐句修改该值,最后打印出来的是最后一次修改的值.
原文:https://www.cnblogs.com/oo5lll/p/11950821.html