为什么这个函数只运行一次?

Why does this function only run once?

本文关键字:一次 运行 函数 为什么      更新时间:2023-09-26

我真的认为这应该每100毫秒运行一次,但它只哔哔一次。

我知道setInterval,但是这让我很困惑。

var test = function () {
    console.log('beep')
    setTimeout( test, 100 );
}();

有人知道为什么这只运行一次而不是永远吗?

匿名函数在赋值给test之前正在执行

您可以将其声明为命名函数表达式:

(function test() {
  console.log('beep')
  setTimeout(test, 100);
})();

或者将调用函数推迟到赋值之后:

var test = function() {
  console.log('beep')
  setTimeout(test, 100);
};
test();

OP将变量test作为函数的返回值,而不是函数本身。

你可以这样做:

var test = function(){
    setTimeout(test,100);
};
test();

(function test() {
  setTimeout(test, 100);
})();

下面的链接包含答案,即创建阶段之后是执行阶段。测试变量在执行阶段未定义…当函数执行时。https://m.youtube.com/watch?v=Bv_5Zv5c-Ts

尝试这样的

var test = function () {
console.log('beep');
}
setInterval(test, 300);