关于jQuery 1.4的发行说明,我来了acrosss $.noop()
,这是:
说明:空函数。 (在1.4中添加)
当你希望传递一个什么都不做的函数时,可以使用这个空函数。
也许我在这里遗漏了一些深刻的东西,但是传递一个空函数究竟是什么实际用途呢?
代码示例赞赏。
答案 0 :(得分:48)
由于jQuery-Dev邮件列表中报告的使用$.ajax
时嵌入式系统的性能问题,提出了此功能。您可以看到thread。
基本上,他们更喜欢引入和使用这个单独的空函数,而不是在周围声明空的匿名函数。
现在,此功能已在ajax,event和offset模块内部使用。
您可以在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块中使用时会派上用场。