我真的认为这应该每100毫秒运行一次,但它只会发出一次哔声。
我知道setInterval,但这让我感到困惑。
var test = function () {
console.log('beep')
setTimeout( test, 100 );
}();
有人知道为什么这只会运行一次而不是永远运行吗?
答案 0 :(得分:7)
匿名函数在分配给test
之前正在执行。
您可以将其声明为命名函数表达式:
(function test() {
console.log('beep')
setTimeout(test, 100);
})();
或推迟调用函数直到作业完成后:
var test = function() {
console.log('beep')
setTimeout(test, 100);
};
test();
答案 1 :(得分:2)
OP使变量test
成为函数的返回值,而不是函数本身。
你可以这样做:
var test = function(){
setTimeout(test,100);
};
test();
或
(function test() {
setTimeout(test, 100);
})();
答案 2 :(得分:-1)
以下链接包含答案I.e.创建阶段,然后是执行阶段。测试变量在执行阶段是未定义的...当函数执行时。 https://m.youtube.com/watch?v=Bv_5Zv5c-Ts
答案 3 :(得分:-3)
尝试这样
var test = function () {
console.log('beep');
}
setInterval(test, 300);