Javascript 我如何用闭包解决这个问题?

Javascript 我如何用闭包解决这个问题?,javascript,closures,javascript-objects,Javascript,Closures,Javascript Objects,我想使用closure来跟踪所有以前的计算,并使用closure将它们填充到一个对象中,然后只打印结果,如果密码被点击,那么它应该用以前的操作来控制整个对象的输出 函数保存输出(func、magicWord){ 让输出={}; 让外部=魔法世界; 函数someWork(x){ 如果(x!==外部){ 输出.x=func(x); console.log(输出[x]); }否则{ 控制台日志(输出); } } } ///***取消这些注释以检查您的工作***/ 常量multiplyBy2=函数(n

我想使用closure来跟踪所有以前的计算,并使用closure将它们填充到一个对象中,然后只打印结果,如果密码被点击,那么它应该用以前的操作来控制整个对象的输出

函数保存输出(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)
    返回值,则需要
    returnoutput[x]
    from
    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}
Your
saveOutput()
函数不返回任何内容。为什么必须使用闭包来完成此操作?您不能每次执行计算时只填充一个数组吗?您只需要
返回
someWork
函数哦,我现在看到了我所犯的错误,我还在比较magicword,而我已经将它打包到了结束了,谢谢你的回答