在Javascript中执行简单闭包时出现运行时错误

Runtime error when executing simple closure in Javascript

本文关键字:运行时错误 闭包 简单 Javascript 执行      更新时间:2023-09-26

我是JS的新手,正在努力学习。规范要求以下内容:编写一个以另一个函数*为参数的函数,并创建只能调用一次的函数版本。对修改后的函数的重复调用将不起作用,返回原始调用的值。如果不使用闭包,你怎么能做到这一点?这可能吗?你怎么能用闭包做到这一点*注意:这个原始的输入函数不应该有任何参数。

这就是我所拥有的:

var divide = function () {
var x = 2;
var y = 6;
return y/x;
}
var mainFunc = function (func) {
return func(){
    return y/x + 1;
}
}
var output = mainFunc(divide);
console.log(divide());
console.log(output());
console.log(output());

我在"return func()"处收到了一个"Unexpected token{"错误。我不太明白我做错了什么?根据规范,我将divide()传递给mainFunc(),并将其设置为引用变量输出。然后,我多次调用divide(

谢谢你的帮助。

开始:

function runonce(func) {
  return (function(func) {
    var ran = false;
    var retval;
    return function() {
      if (!ran) {
        ran = true;
        retval = func();
      }
      return retval;
    }
  })(func);
}
function realfunction() {
  console.log('really running');
  return 5;
}
var realfunctionrunner = runonce(realfunction);
realfunctionrunner();
realfunctionrunner();
realfunctionrunner();

仔细研究代码,整个技巧是一个"自包含库",其结果是从runonce函数

返回的