Javascript 我的JS setTimeout()参数有什么问题

Javascript 我的JS setTimeout()参数有什么问题,javascript,settimeout,Javascript,Settimeout,在以下代码段中,我不明白为什么注释掉的行不起作用,而后面的行起作用: function clicked() { var t1 = setInterval(print, 100); // setTimeout(clearInterval(t1), 16000); setTimeout(function(){clearInterval(t1)}, 1600); setTimeout的第一个参数应该是一个函数 clearInterval是一个函数 clearInterval(t1

在以下代码段中,我不明白为什么注释掉的行不起作用,而后面的行起作用:

function clicked()  {
    var t1 = setInterval(print, 100);
//  setTimeout(clearInterval(t1), 16000);
    setTimeout(function(){clearInterval(t1)}, 1600);

setTimeout
的第一个参数应该是一个函数

clearInterval
是一个函数


clearInterval(t1)
是立即调用函数时得到的返回值。
setTimeout
的第一个参数应该是函数

clearInterval
是一个函数


clearInterval(t1)
是立即调用函数时得到的返回值。

这是因为setTimeout的第一个参数应该是函数。 这就是为什么你可以给它一些东西,比如“print”,我假设它是你上下文中的一个函数,或者“function(){clearInterval(t1)}”,它是一个使用clearInterval的匿名函数


然而,在t1上调用clearInterval的“clearInterval(t1)”的值是clearInterval的返回值,它可能不是一个函数。仅此而已。

这是因为setTimeout的第一个参数应该是一个函数。 这就是为什么你可以给它一些东西,比如“print”,我假设它是你上下文中的一个函数,或者“function(){clearInterval(t1)}”,它是一个使用clearInterval的匿名函数

然而,在t1上调用clearInterval的“clearInterval(t1)”的值是clearInterval的返回值,它可能不是一个函数。仅此而已。

另一种方法是:

setTimeout(clearInterval.bind(null,t1), 1600);
另一种方法是:

setTimeout(clearInterval.bind(null,t1), 1600);

好的,谢谢。我已经有一段时间没用了,我能把问题标记为已回答吗?@JohnWhite-很好,谢谢。“我已经有一点没用了,我能把这个问题标记为已回答吗?”@JohnWhite-