函数未使用setTimeout定义

See*_*oee 1 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();

})()
Run Code Online (Sandbox Code Playgroud)

noa*_*hnu 5

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

setTimeout行更改为:

var increment = setTimeout(progressBar, 50);
Run Code Online (Sandbox Code Playgroud)

例如

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

   myfunction();
})()
Run Code Online (Sandbox Code Playgroud)