为什么这个功能只运行一次?

Dig*_*nDj 2 javascript settimeout

我真的认为这应该每100毫秒运行一次,但它只会发出一次哔哔声.

我知道setInterval,但这让我很困惑.

var test = function () {
    console.log('beep')
    setTimeout( test, 100 );
}();
Run Code Online (Sandbox Code Playgroud)

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

4ca*_*tle 7

匿名函数在分配之前正在执行test.

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

(function test() {
  console.log('beep')
  setTimeout(test, 100);
})();
Run Code Online (Sandbox Code Playgroud)

或推迟调用函数直到赋值后:

var test = function() {
  console.log('beep')
  setTimeout(test, 100);
};
test();
Run Code Online (Sandbox Code Playgroud)