setTimeout - это асинхронный вызов.Он позволит продолжить работу остальной части кода, пока не будет достигнута задержка.Когда это происходит, если переданное значение является строкой, эта строка должна быть оценена, например, eval("f2()")
.Но поскольку код уже прошел, функция f2
больше не находится в видимой области видимости и поэтому не может быть найдена.
Вместо использования строки просто передайте ссылку на функцию напрямую
setTimeout(f2,3000)
demo
function f1(){
function f2(){ console.log("f2 logging"); }
setTimeout(f2,3000);
}
f1();