Javascript 我如何用闭包解决这个问题?
我想使用closure来跟踪所有以前的计算,并使用closure将它们填充到一个对象中,然后只打印结果,如果密码被点击,那么它应该用以前的操作来控制整个对象的输出Javascript 我如何用闭包解决这个问题?,javascript,closures,javascript-objects,Javascript,Closures,Javascript Objects,我想使用closure来跟踪所有以前的计算,并使用closure将它们填充到一个对象中,然后只打印结果,如果密码被点击,那么它应该用以前的操作来控制整个对象的输出 函数保存输出(func、magicWord){ 让输出={}; 让外部=魔法世界; 函数someWork(x){ 如果(x!==外部){ 输出.x=func(x); console.log(输出[x]); }否则{ 控制台日志(输出); } } } ///***取消这些注释以检查您的工作***/ 常量multiplyBy2=函数(n
函数保存输出(func、magicWord){
让输出={};
让外部=魔法世界;
函数someWork(x){
如果(x!==外部){
输出.x=func(x);
console.log(输出[x]);
}否则{
控制台日志(输出);
}
}
}
///***取消这些注释以检查您的工作***/
常量multiplyBy2=函数(num){
返回数*2;
};
const multBy2AndLog=saveOutput(multiply2,'boo');
console.log(multBy2AndLog(2));//=>应该记录4
console.log(multBy2AndLog(9));//=>应该记录18
console.log(multBy2AndLog('boo'));//=>应该记录{2:4,9:18}
- 您正在执行
。要使其工作,您需要从multBy2AndLog
返回saveOutput
函数someWork
- 如果希望
返回值,则需要multBy2AndLog(2)
fromreturnoutput[x]
someWork
将向output.x
对象添加属性output
。您需要使用括号表示法x
来添加一个在output[x]
内有值的键()x
函数保存输出(func、magicWord){
让输出={};
让外部=魔法世界;
// ↓ 在这里加上退货
返回函数someWork(x){
如果(x!==外部){
输出[x]=func(x);//不输出.x
返回输出[x];//应记录4
console.log(multBy2AndLog(9));//=>应该记录18
log(multBy2AndLog('boo'));//=>应该记录{2:4,9:18}
YoursaveOutput()
函数不返回任何内容。为什么必须使用闭包来完成此操作?您不能每次执行计算时只填充一个数组吗?您只需要返回someWork
函数哦,我现在看到了我所犯的错误,我还在比较magicword,而我已经将它打包到了结束了,谢谢你的回答