2

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

有什么区别:

this.on('click',thisismyfunction );

和:

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

thisismyfunction();

});
4

5 回答 5

3

一个显着的区别:第一个函数将直接传递一个事件对象,可以通过您命名的第一个参数thisismyfunction或 at 访问arguments[0]。在第二个版本中,该对象将被传递给外部匿名函数。

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

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

于 2013-02-07T02:33:31.220 回答
2

一种是命名函数。关键是您可能会从多个地方多次调用该函数。另一个是匿名函数。这基本上就像说“执行以下操作:”

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

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

匿名函数可以以与普通函数类似的方式定义,但它没有任何名称。

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

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

JQuery 非常频繁地使用匿名函数,如下所示:

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

取自TutorialsPoint jQuery Basics

于 2013-02-07T02:34:35.893 回答
1

真的没什么。

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

于 2013-02-07T02:32:17.967 回答
0

thisismyfunction 不会收到任何参数。您将其嵌入匿名函数的方式。

于 2013-02-07T02:35:34.533 回答
0

在您的示例中,结果可能没有区别。但是这两种方法的行为确实略有不同:

第一个例子:

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

第二个例子

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

所以你使用哪种风格取决于你自己的喜好和你想要达到的效果

于 2013-02-07T02:39:56.763 回答