嵌套函数重复

时间:2016-12-31 17:55:36

标签: javascript

我正在尝试创建一个函数REPEAT,而不是。这是我的代码:

handleClick = (e) => {
    console.log(this);
}

效果很好。

但是:

function REPETER(nb) {
return {
    INSTRUCTIONS: function(callback) {
        for(i_repeter=1;i_repeter<=nb;i_repeter++) callback();
        return this ;
    }
};
}
var x = 1 ;
REPETER(5)
.INSTRUCTIONS (() => {
xxx = xxx + 2 ;
alert(i_repeter);
}
);

不起作用,第一个REPETER什么都不做。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在i_repeter函数中声明INSTRUCTIONS。因为您没有声明它,所以您正在创建一个隐式全局。 Globals是一件坏事,隐含的是双倍的。由于你有一个转发器呼叫中继器,你最终会产生串扰;第一个人认为它已经完成了。

所以:

function REPETER(nb) {
  return {
    INSTRUCTIONS: function(callback) {
      var i_repeter;                   // <=== Change is here
      for (i_repeter = 1; i_repeter <= nb; i_repeter++) callback();
      return this;
    }
  };
}

另请勿尝试在更新i_repeter的函数中使用xxx(并确保声明xxx)。