如何使用setTimeout调用函数内部的函数

时间:2017-07-06 11:43:52

标签: javascript function

我试图用另一个函数中的setTimeout()调用一个函数,我一直收到这个错误:

hi is not defined

这是代码。

hello("hi");
function hello(a)
{
    hi(a);
    function hi(b)
    {
        console.log(b);
        c = setTimeout('hi("' + b + '")', 50)
    }
}

正在记录一个"hi",但之后它就会停止。我认为问题在于这一部分:c = setTimeout('hi("' + b + '")', 50)

是否有修改而不改变函数结构内的函数?

2 个答案:

答案 0 :(得分:2)

您可以将参数作为第三个参数传递给setTimeout。

hello("hi");
function hello(a)
{
    hi(a);
    function hi(b)
    {
        console.log(b);
        c = setTimeout(hi, 50,b)
    }
}

答案 1 :(得分:0)

c = setTimeout( () => hi(b), 50 )应该有用。

修改(感谢评论中的@evolutionxbox)

c = setTimeout( hi, 50, b )看起来更好。

您收到此错误:

  

hi未定义

第4行:hi(a)

执行甚至没有进入超时部分。超时本身不会产生错误,但也不会做任何事情,因为'hi("' + b + '")'是一个字符串,而不是一个函数。