在以下代码段中,我无法理解为什么注释掉的行不起作用,而后面的行确实有效:
function clicked() {
var t1 = setInterval(print, 100);
// setTimeout(clearInterval(t1), 16000);
setTimeout(function(){clearInterval(t1)}, 1600);
答案 0 :(得分:4)
setTimeout
的第一个参数应该是一个函数。
clearInterval
是一个功能。
clearInterval(t1)
是立即调用该函数时获得的返回值。
答案 1 :(得分:1)
这是因为setTimeout的第一个参数应该是一个函数。 这就是为什么你可以给它类似“print”的东西,我假设它是你上下文中的一个函数,或者是“function(){clearInterval(t1)}”这是一个使用clearInterval的匿名函数。
但是,在t1上调用clearInterval的“clearInterval(t1)”的值是clearInterval的返回值,它可能不是函数。就是这样。
答案 2 :(得分:0)
另一种方式是:
<Window.Resources>
<views:FirstPanelView x:Key="FirstPanelViewKey"/>
<views:SecondPanelView x:Key="SecondPanelViewKey"/>
<DataTemplate x:Key="DT1">
<ContentControl Content="{StaticResource FirstPanelViewKey}" />
</DataTemplate>
<DataTemplate x:Key="DT2">
<ContentControl Content="{StaticResource SecondPanelViewKey}" />
</DataTemplate>
</Window.Resources>