2017-02-20 93 views
3

请有人告诉我,下面的setInterval方法有什么区别。将setInterval中的函数作为参数传递的最佳方式是什么?setInterval参数之间的区别

function red_on(){ 
    $('#red_light').css('opacity', 1); 
} 

setInterval(function() { 
    red_on(); 
}, 4000); 

setInterval(red_on, 4000); 

回答

1

最后的方法是最好的。

基本上在第一方法,则需要(red_on())匿名函数的内部执行功能。你有两个功能。

由于setInterval的走功能作为第一个参数,你可以只传递你想不创建匿名函数来执行该功能。

如果你想做red_on()别的东西(如console.log),那么第一种方法更好。

TL; DR没有大的区别。

0

第二种方法是正确的在这种情况下。我会把它形容为人。如果您想在第二种方法中与名为Red_on的人交谈,则您直接与Red_on交谈。您仍然与Red_on交谈的第一种方法是,您可以使用匿名功能或其他人与他们交谈。因此,虽然红色仍然收到您的消息,你只是在一个匿名函数中添加另一个步骤。

0

没有区别。

从性能持续性的角度来看,第二种方法更好,因为您不会创建一致函数,而仅使用参考。在第一种情况下,您将创建两次函数以实现相同的结果。

2

当您需要将某些参数传递给该函数时,您可以使用第一种方法,否则第二种方法更简单易读。

例:

function red_on(opacity){ 
    $('#red_light').css('opacity', opacity); 
} 

setInterval(function() { 
    red_on(1); 
}, 4000); 

setInterval(red_on, 4000); <-- Here you cannot pass parameters 

请参阅下面的代码片段:

function test(par1){ 
 
    console.log(par1); 
 
} 
 

 
setInterval(function() { 
 
    test("message every 4 seconds"); 
 
}, 4000); 
 

 
setInterval(test("message2: called just one time!"), 4000);

我希望它可以帮助你。再见。

相关问题