【问题标题】:setTimout undefined functionsetTimeout 未定义函数
【发布时间】:2018-11-17 01:41:17
【问题描述】:

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

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

它运行完美。

但是当我像这样将所有内容包装在函数 f1 中时:

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

f1();

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

【问题讨论】:

  • 不知道为什么这会被否决。对我来说似乎是一个合法的问题

标签: javascript function nested settimeout


【解决方案1】:

setTimeout 是一个异步调用。它将允许其余代码继续执行,直到达到延迟。如果传递的值是一个字符串,那么当这种情况发生时,该字符串必须被评估,例如eval("f2()")。但是因为代码已经通过了,所以f2函数已经不在可见范围内,因此无法找到。

不用字符串,直接传递函数引用

setTimeout(f2,3000)

演示

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多