Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中setTimeout的序列_Javascript_Function_Settimeout - Fatal编程技术网

JavaScript中setTimeout的序列

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

有人能给我解释一下,为什么如果我用JavaScript创建一个函数并将它添加到
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行错误是什么?没有错误。只是没有超时。请标记为正确答案,以防出现错误它不适合你。