setTimout未定义函数

时间:2018-11-17 01:41:18

标签: javascript function nested settimeout

当我像这样使用setTimout调用函数时:

function f2() { console.log("hey"); }
setTimeout("f2()", 3000);

运行完美。

但是当我将所有内容包装在函数f1中时,如下所示:

function f1() {
  function f2() { console.log("hey"); }
  setTimeout("f2()", 3000);
}

f1();

我收到一条错误消息:f2未定义。 为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:4)

setTimeout是一个异步调用。这将允许其余代码继续执行,直到达到延迟为止。如果传递的值是字符串,则必须进行评估,例如$('#boxchatting').load('result.php', function(){ $('#loadmore').prependTo(this) }); 。但是因为代码已经通过,所以eval("f2()")函数不再在可见范围内,因此无法找到。

直接使用函数引用而不是使用字符串

f2

演示

setTimeout(f2,3000)