首页 > 解决方案 > Javascript功能范围,如何绕过它?

问题描述

所以基本上我正在尝试创建该setTimeout功能的替代品,因为它不适用于我的目的。

addInterval(func, wait_time){
    this.intervals.push(func);
    this.interval_waits.push(wait_time);
    this.updateInterval(this.interval_waits.length - 1);
}
updateInterval(index){
    console.log(index);
    function callTimeout(index, timeC){
        let i = index;
        let t = timeC;
        timeC.startTimeout(function(){  
            console.log(i);
            t.intervals[i](t.interval_depends[i]);
            t.updateInterval(i);
        }, t.interval_waits[i]);
    }
    let a = index;
    callTimeout(a, this);
}

this.updateInterval被调用时,它一次将值发送0-6updateInterval一个,这个函数调用一个调用的内部函数,该函数callTimeout启动另一个函数(太长而无法包含)但基本上在callTimeout执行传递的函数时,它只使用最终值(6 ) 从updateInterval. 我无法使用参数 forupdateInterval因为它在传递的函数中被调用startTimeout(),并且我需要它保留最初调用时使用的相同值,但是该值是有问题的问题。

我不确定我的措辞是否好,这是我第一个问题,请告诉我是否需要更改任何内容。

我试过在很多地方使用this而不是。var

标签: javascriptvariablesscoping

解决方案


推荐阅读