Javascript闭包计数调用
我正在学习JS闭包的概念。我被困在练习的第二部分 问题是: 第1部分: 编写一条语句,在执行时绑定变量inc 一个函数,该函数接受一个数字(x)并返回该数字x+1 第二部分:Javascript闭包计数调用,javascript,Javascript,我正在学习JS闭包的概念。我被困在练习的第二部分 问题是: 第1部分: 编写一条语句,在执行时绑定变量inc 一个函数,该函数接受一个数字(x)并返回该数字x+1 第二部分: 创建一个新文件counter.js,它导出up,不接受 参数,并且在第一次调用时返回1;第二次 调用,返回2;通常,在第n次调用返回时 N此函数不应直接使用任何算术运算符,而是 应使用inc. 我对第一部分的答复: // inc.js function plusOne(x){ return x+1; } mod
创建一个新文件counter.js,它导出
up
,不接受
参数,并且在第一次调用时返回1;第二次
调用,返回2;通常,在第n次调用返回时
N此函数不应直接使用任何算术运算符,而是
应使用inc.
我对第一部分的答复:
// inc.js
function plusOne(x){
return x+1;
}
module.exports.plusOne = plusOne;
我对第二部分的答复:
let inc = require('./inc.js')
function makeCounter(){
let count = 0;
return inc.plusOne(count);
};
let counter = makeCounter;
console.log( counter() ); // should execute 0
console.log( counter() ); // should execute 1
console.log( counter() ); // should execute 2
我对第二部分的回答显然不正确,因为我的3张照片都是“1”
对于同一个函数,我还有一个额外的问题(我不确定是否将其添加到这里或添加到我问的其他问题中)—— 在第2部分中,更改
let counter = makeCounter;
到
将生成一个错误。我将此作为一个单独的问题发布。但我对第2部分的回答是,makeCounter()确实返回一个函数
inc.plusOne(count)
,而不是字符串。为什么仍然存在错误 正如george所评论的,您的makeCounter
函数应该通过返回一个闭包中带有mutatingcount
变量的函数来创建闭包。这使得计数
在函数调用之间存储其值。看起来是这样的:
function公司(x){
返回x+1;
}
函数makeCounter(){
让计数=0;
返回函数callsCenter(){
计数=inc(计数);
返回计数;
}
}
const myCounter=makeCounter()
console.log(myCounter())
console.log(myCounter())
console.log(myCounter())
makeCounter
应该返回一个递增和更新局部变量的函数。
let counter = makeCounter();