JavaScript中setTimeout的序列
有人能给我解释一下,为什么如果我用JavaScript创建一个函数并将它添加到JavaScript中setTimeout的序列,javascript,function,settimeout,Javascript,Function,Settimeout,有人能给我解释一下,为什么如果我用JavaScript创建一个函数并将它添加到setTimeout,setTimeout中,它就不能正常工作,但是如果我创建匿名函数,一切都可以了?示例如下: 有效: setTimeout(function() { alert("foo"); }, 100); function foo() { alert('foo'); } setTimeout(foo, 100); 它不起作用: setTimeout(function() { ale
setTimeout
,setTimeout
中,它就不能正常工作,但是如果我创建匿名函数,一切都可以了?示例如下:
有效:
setTimeout(function() {
alert("foo");
}, 100);
function foo() {
alert('foo');
}
setTimeout(foo, 100);
它不起作用:
setTimeout(function() {
alert("foo");
}, 100);
function foo() {
alert('foo');
}
setTimeout(foo, 100);
欠置设置setTimeout
将匿名函数传递给setTimeout
,如何使用它没有区别:
setTimeout(function() {
console.log("foo");
}, 1000);
或传递现有函数:
function foo() {
console.log('foo');
}
setTimeout(foo, 1000);
setTimeout
是一个异步的,因此如果您在常规的console.log
之前使用它,那么setTimeout
函数之后的console.log
将首先打印,然后setTimeout
内部的日志将在指定的延迟后打印(本例中为1秒):
setTimeout(函数(){
控制台日志(“bar”);
}, 1000);
console.log(“foo”);
我检查了您的代码,您正在访问setTimeout回调中的snakeTail。当回调函数在100毫秒后执行时,变量snakeTail不再可用。您应该将行替换为
setTimeout(function(param){
alert("Game over! Your score: "+(param-5)+" points. Wanna play again?");
location.reload();
}, 100, snakeTail);
通过这种方式,您可以保存SNAKATail变量并将其传递到setTimeout回调中。scond代码工作正常。我们还需要了解其他一些信息吗?看起来正常,请检查小提琴:您能看到并告诉我出了什么问题吗?第89行错误是什么?没有错误。只是没有超时。请标记为正确答案,以防出现错误它不适合你。