为什么在这种情况下不调用setTimeOut?

时间:2015-10-09 10:13:36

标签: javascript

我使用setTimeout函数每2秒调用一次函数,这是我的代码

这是我的代码

ComboBox

https://jsfiddle.net/bh44ugv6/1/

但是请你告诉我为什么在这种情况下没有调用setTimeOut?

3 个答案:

答案 0 :(得分:7)

当您致电main时未设置fetchdata,因此setTimeout(fetchdata, 2000);使用undefined

设置main()后,您需要致电fetchdata

(function () {

    function main() {
        setTimeout(fetchdata, 2000);
    }
    var fetchdata = function () {
        alert("Boom!");
    };

    main();
})();

或者改为使用命名函数:

(function () {

    main();

    function main() {
        setTimeout(fetchdata, 2000);
    }

    function fetchdata() {
        alert("Boom!");
    };

})();

答案 1 :(得分:1)

因为fetchData尚不存在。如果您将其更改为:

function fetchdata() {
    alert("Boom!");
};

它有效。

答案 2 :(得分:1)

由于fetchdata中的mainundefined,如果您想使用Function Expressions,则应在main之前定义它,就像这样

(function () {

    var fetchdata = function () {
        console.log("Boom!");
    }
     
    main();        
    
    function main() {
        setTimeout(fetchdata, 2000);
    }
    
})();

您也可以将fetchdata定义为Function Declaration

(function () {
  main();

  function main() {
    setTimeout(fetchdata, 2000);
  }
  
  function fetchdata() {
    console.log("Boom!");
  };

})();