setTimeout calling function inside function - Scope-Issue

19,248

Solution 1

function general(){
    function saysomething(){
        console.log('hi there');
    }
    setTimeout(saysomething, 1000);
}

Solution 2

Not positive this is what you mean but you can pass the variables when you call the function in the setTimeout

function f1(){
    var a='1';
    var b='b';
    setTimeout(function(){f2(a,b);},1000)

}

function f2(a,b){
      alert(a + b);
}

f1();
Share:
19,248
Julian
Author by

Julian

Frontend Dev at 3ev. Designer, Animator, Artist and generally a fan of building stuff.

Updated on June 04, 2022

Comments

  • Julian
    Julian almost 2 years

    So, the problem is that I have a function inside a function that needs to be called by setTimeout. That doesn't work however because setTimeout will assume that the function it calls has the root as its' scope.

    Any idea how I could solve this without changing the scope of the function?

    Edit:

    Here is what I mean:

    function general(){
        function saysomething(){
            console.log('hi there');
        }
    setTimeout("saysomething();", 1000);
    }
    

    The setTimeout fails..