JavaScript类递归期间的范围更改

时间:2018-06-13 18:24:22

标签: javascript recursion

在以下代码的递归过程中,范围如何变化?

具体而言,第一次调用_action(),直观地运作并维护对this._updateRateMillisecondsthis._updateAction的引用。但是,在通过递归的第二次输入期间,它们会丢失。

代码使用以下更改:

setTimeout(this._action, this._updateRateMilliseconds);
- > setTimeout(this._action.bind(this), this._updateRateMilliseconds)

有人可以解释在递归过程中范围如何变化以及为什么我需要混淆,至少对我而言this._action.bind(this)

    export class UpdateTimer {

       constructor(updateRateMilliseconds, updateAction) {

           this._updateRateMilliseconds = updateRateMilliseconds;
           this._updateAction = updateAction;

           this._stopUpdates = true;
       }

       _action() {
           if (this._stopUpdates) return;

           this._updateAction();
           setTimeout(this._action, this._updateRateMilliseconds);
       }

       Stop() {
           this._stopUpdates = true;
       }

       Start() {
           this._stopUpdates = false;

           this._action();
       }
    }

0 个答案:

没有答案