javascript-$ .noop()在jQuery 1.4中的实际用途是什么?

翻阅有关jQuery 1.4的发行说明,我遇到了$.noop(),它是:

说明:空函数。 (在1.4中添加)

当您希望传递不做任何事情的函数时,可以使用此空函数。

也许我在这里遗漏了一些深刻的东西,但是传递空函数的实际用途到底是什么?

代码示例表示赞赏。

Sampson asked 2020-06-30T03:48:47Z
9个解决方案
49 votes

由于使用jQuery-Dev邮件列表上的$.ajax时嵌入式系统上的性能问题,建议使用此功能。 您可以看到该线程。

基本上,他们更喜欢引入和使用这个单一的空函数,而不是到处声明空的匿名函数。

现在,此功能已在ajax,事件和偏移量模块内部使用。

您也可以看一下提交时的提交。

CMS answered 2020-06-30T03:49:15Z
19 votes

如果您有一个接受函数作为参数的函数,并且没有任何代码可提供,则可以传递function(){}

我想不出jQuery中的这种情况,但参数首先不是可选的。

与编写function(){}不同,传递$.noop不会创建新的函数实例,从而节省了一些内存。 但是,如果通过传递它来修改功能对象(例如funcParam.id = 2),则传递$.noop会使事情搞砸。

SLaks answered 2020-06-30T03:49:44Z
9 votes

真实示例(几乎):

jQuery.fn.myAwesomeAjax = function(url, complete) {
  return jQuery.ajax(url || this.url)
    .complete(complete || jQuery.noop);
};

使用它代替function (){}

Corin answered 2020-06-30T03:50:08Z
3 votes

可能如果某些不良的API需要函数作为参数,而您又不想在其中做任何事情,那么这将是一种框架支持的方法,以使其变得明显。

Noon Silk answered 2020-06-30T03:50:28Z
3 votes

我使用了两个需要回调的插件,但是对于某些部分,我实际上并不想使用某个回调。 因此,我放入function(){}。

noop在jQuery源中定义为

noop: function() {}

因此它适合您使用空白函数的任何地方,例如上面的示例。

JAL answered 2020-06-30T03:50:57Z
0 votes

唯一的逻辑原因是,如果您要调用一个执行某项功能的函数并调用另一个函数,并且希望更高级别的函数在不调用参数函数的情况下执行其任务。

大多数jQuery函数都可以选择使用参数函数,因此您不必传递一个参数。也许不是一两个传递这种情况-也许是为了帮助开发人员像这样自定义代码。

Kaleb Brasee answered 2020-06-30T03:51:22Z
0 votes

如果一个函数要求您将一个函数作为参数传递呢? 说的短于do_something($.noop),而不是do_something(function(){})

虽然不是很多...

... 6个字符...

...是的,该功能实际上看起来毫无用处。

Nicolás answered 2020-06-30T03:51:55Z
0 votes

如果您具有可将功能提供给其他功能的功能,则该功能很有用。

示例:您有一个数据列表。 每个项目都有一个执行某项操作的按钮。 每个项目的“内容”可能不同。 您有一个“ FunctionFactory”,它可以接收项目并返回一个函数。 如果您不希望按钮由于某种原因而做某事,那么最干净的方法可能是返回一个空函数,因为这样您就知道您的Factory ALWAYS通常会返回一个函数。

我没有jQuery的具体示例,但是我猜想在.each或.map块中使用时可能会派上用场。

Michael Stum answered 2020-06-30T03:52:24Z
0 votes

在需要回调的情况下,这纯粹是function(){}的方便/替换-我想我不会很快使用它。

我敢打赌,当jQuery团队放下它时,他们笑了起来,也起到了喜剧目的。

meder omuraliev answered 2020-06-30T03:52:49Z
translate from https://stackoverflow.com:/questions/2069345/what-real-purpose-does-noop-serve-in-jquery-1-4