$ .noop()在jQuery 1.4中的真正用途是什么?

时间:2010-01-15 03:40:52

标签: javascript jquery jquery-1.4 noop

关于jQuery 1.4的发行说明,我来了acrosss $.noop(),这是:

  

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

     

当你希望传递一个什么都不做的函数时,可以使用这个空函数。

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

代码示例赞赏。

9 个答案:

答案 0 :(得分:48)

由于jQuery-Dev邮件列表中报告的使用$.ajax时嵌入式系统的性能问题,提出了此功能。您可以看到thread

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

现在,此功能已在ajaxeventoffset模块内部使用。

您可以在commit介绍它时查看。

答案 1 :(得分:19)

如果您有一个接受函数作为参数的函数,并且您没有任何代码可以提供它,则可以传递$.noop

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

与编写function(){}不同,传递$.noop不会创建新的函数实例,从而节省了一点内存。但是,如果您要传递它以修改函数对象(例如,funcParam.id = 2),则传递$.noop会使事情变得混乱。

答案 2 :(得分:9)

真实世界的例子(差不多):

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

使用它代替function (){}

答案 3 :(得分:3)

如果一些错误的API需要一个函数作为参数,并且你不想在其中做任何事情,这可能是一种框架支持的方式,使这一点显而易见。

答案 4 :(得分:2)

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

noop在jQuery源中定义为

noop: function() {}

所以它适合你使用空白函数的任何地方,例如上面的例子。

答案 5 :(得分:0)

唯一合乎逻辑的原因是,如果你正在调用一个函数来执行某些操作并且调用另一个函数,并且你希望更高级别的函数在不调用参数函数的情况下完成它。

大多数jQuery函数可选择使用参数函数,因此您不必传入一个。也许有一两个不是这样的情况 - 或者可能是为了帮助开发人员使用他们的自定义代码此

答案 6 :(得分:0)

如果一个函数要求你传递函数作为参数可能吗?说do_something($.noop)do_something(function(){})更短。

虽然不是很多......

... 6个字符......

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

答案 7 :(得分:0)

在需要回调的情况下,它纯粹是function(){}的便利/替代 - 我认为我不会很快使用它。

我敢打赌,jQuery团队在放弃它时会笑得很开心,也是一个喜剧用途。

答案 8 :(得分:0)

如果你有一个为其他功能提供功能的功能,它会很有用。

示例:您有一个数据列表。每个项目都有一个按钮来执行某些操作。每件物品的“东西”可能不同。你有一个“FunctionFactory”,它接收项目并返回一个函数。如果你不希望按钮出于某种原因做某事,那么最干净的方法就是返回一个空函数,就像你知道你的Factory ALWAYS返回一个函数一样。

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