[JavaScript] 纯文本查看 复制代码 // 通过返回一个对象来获取函数内部的变量(可以通过对象操作多个数据和变量)
function getVariables() {
var a = Math.random();
var b = Math.random();
var c = Math.random();
// 直接返回一个对象, 对象里面返回一个值
return {
a : function () {
return a;
},
set_A : function(v){
a = v;
},
b : function(){
return b;
},
set_B : function(v){
b = v;
},
c : function(){
return c;
},
set_C : function (v) {
c = v;
}
}
}
// 1. 获取函数中的变量,直接获取一个对象,这个函数返回的就是一个对象
var data = getVariables();
var a = data.a();
var b = data.b();
var c = data.c();
console.log(a, b, c);
// 2.修改变量的值
data.set_A(10);
data.set_B(20);
data.set_C(30);
console.log(a, b, c);
// 3. 要想重新获取到内部的变量,需要把函数再次执行一次
var a = data.a();
var b = data.b();
var c = data.c();
console.log(a, b, c);
// 4. 闭包的应用场景:闭包可以一些数据的特性
function createCache() {
var keys = [];
function cache(key, value) {
if (keys.push(key + '') > 100){
delete cache[keys.shift()];
}
return (cache[key + ' '] = value);
}
return cache;
} |