声明一个新功能vs立即调用它?

时间:2013-02-07 02:30:44

标签: javascript jquery

我试着谷歌搜索答案,但问题是我真的不知道如何解决这个问题,我只是找到了错误的主题。

有什么区别:

this.on('click',thisismyfunction );

this.on('click', function(){

thisismyfunction();

});

5 个答案:

答案 0 :(得分:3)

一个值得注意的区别:第一个函数将直接传递一个事件对象,可以通过thisismyfunction的第一个参数或arguments[0]的任何名称访问。在第二个版本中,该对象将被传递给外部匿名函数。

此外,在两个示例中,都不会立即调用。您将两个函数(第一种情况下的命名函数或第二种情况下的匿名函数)绑定为事件处理程序,因此它们将在相关事件发生后调用。

您使用哪一个主要取决于代码结构和样式。正如bennett_an所说,当你将同一个函数绑定到多个事件时,最好使用第一个变体。

答案 1 :(得分:2)

一个是命名函数。关键是你可能多次从多个地方调用该函数。 另一种是自治功能。它基本上就像说"执行以下操作:"

  

函数:JavaScript中的函数可以是命名函数,也可以是匿名函数。   可以使用function关键字定义命名函数,如下所示:

function named(){
   // do some stuff here
} 
     

匿名函数可以   以与正常函数类似的方式定义,但它不具有   任何名字。

     

可以将匿名函数分配给变量或传递给a   方法如下所示。

var handler = function (){
   // do some stuff here 
}
     

JQuery制作了一个   非常频繁地使用匿名函数如下:

$(document).ready(function(){
   // do some stuff here 
});

取自TutorialsPoint jQuery Basics

答案 2 :(得分:1)

一点也不。

第一个示例将直接绑定到thisismyfunction。第二个示例将绑定到一个匿名函数,然后在调用时调用thisismyfunction()

答案 3 :(得分:0)

此函数不会收到任何参数。你把它嵌入匿名函数的方式。

答案 4 :(得分:0)

在您的示例中,结果可能没有差异。但这两种方法的表现略有不同:

第一个例子:

    函数内的
  • this指的是点击元素
  • 事件对象将通过其参数
  • 传递给元素

第二个例子

    函数内的
  • this是指匿名函数
  • 您可以轻松传递自己的参数,或者在这种情况下根本不传递
  • 您可以将多个函数调用附加到同一事件

您使用哪种风格取决于您自己的偏好以及您想要实现的目标