简单来说,就是呼叫函式内的函式,将记忆体封存在内层。
像这样,我们把 count 封装在 counter() 当中,不但可以让里面的 count 不会暴露在 global 环境造成变数冲突,也可以确保内部 count 被修改。
function counter(){
var count = 0;
function innerCounter(){
return ++count;
}
return innerCounter;
}
var countFunc = counter();
console.log( countFunc() ); // 1
console.log( countFunc() ); // 2
console.log( countFunc() ); // 3
function counter(){
var count = 0;
return function(){
return ++count;
}
}
var countFunc = counter();
var countFunc2 = counter();
console.log( countFunc() ); // 1
console.log( countFunc() ); // 2
console.log( countFunc() ); // 3
console.log( countFunc2() ); // 1
console.log( countFunc2() ); // 2
function callMethod(newMoney) {
var money = newMoney || 1000;
return function (price) {
money = money - price;
return money;
}
}
let updateMyMoney = callMethod(10000000000);
let updateYourMoney = callMethod(1000);
console.log(updateMyMoney(100));
console.log(updateYourMoney(100));
/*自调用函数,共用生存域*/
function Counter() {
let innerCounter = 0;
function change(val) {
innerCounter += val;
}
return {
addone: function() {
change(1);
},
deone: function() {
change(-1);
},
value: function() {
return innerCounter;
}
}
}
let newCounter = Counter()
console.log(newCounter.value()); /* logs 0 */
newCounter.addone();
newCounter.addone();
console.log(newCounter.value()); /* logs 2 */
newCounter.deone();
console.log(newCounter.value()); /* logs 1 */
>>: Day28 参加职训(机器学习与资料分析工程师培训班),网站设计与网页工程技术
Scaffold-DbCoNtext 为资料库的 DbContext 和实体类型产生程序码。 为了让...
判断与流程控制 if 判断式 以白话文来说,就是『当符合某一个条件,就做某一件事』 语法范例: if...
「DOM API 定义了 JavaScript 存取、改变 HTML 架构、内容、样式的方法,甚至...
前言 JWT 是 JSON Web Token 的缩写。在写此篇时,发现已经有许多相关文章可参考,故...
Day21_控制项(A16资讯安全事故管理)有稍微提到的数位监识~继续作功课呀~ ▉ISO 2703...