函数未使用setTimeout定义

时间:2017-01-19 22:24:30

标签: javascript settimeout

由于某种原因,我将js代码包装在一个立即调用的函数表达式中后,我得到了progressBar not defined。想知道为什么会这样吗?

(function(){
    "use strict"

    var progressBar = function(){
        var bar = document.getElementById('pbar'),
        status = document.getElementById('status'),
        barValue = bar.value;

        status.innerHTML = barValue + "%";
        bar.value++;

        var increment = setTimeout("progressBar()", 50);
        if(bar.value == 100){
            status.innerHTML = '100% - Straight Besting';
            bar.value = '100';
            clearTimeout(increment);
        }
    }

    progressBar();

})()

1 个答案:

答案 0 :(得分:5)

将字符串传递给setTimeout时,会在全局window对象的上下文中调用它。

setTimeout行更改为:

var increment = setTimeout(progressBar, 50);

E.g。

(function() {
   let i = 0;
   let myfunction = function() {
      console.log(i++);
      if (i < 10) setTimeout(myfunction, 100);
   };

   myfunction();
})()