JavaScript匿名函数
问题描述:
我周末在网上阅读了以下内容,我想知道大多数人是否认为这是正确的(更好的)做事方式。JavaScript匿名函数
这是不是最好的(右)的方式来做事:
$(document).ready(function() { $('#magic').click(function(e) { $('#yayeffects').slideUp(function() { // ... }); }); $('#happiness').load(url + ' #unicorns', function() { // ... }); });
其更:
var PI = { onReady : function() { $('#magic').click(PI.candyMtn); $('#happiness').load(PI.url + ' #unicorns', PI.unicornCb); }, candyMtn : function(e) { $('#yayeffects').slideUp(PI.slideCb); }, slideCb : function() { ... }, unicornCb : function() { ... } }; $(document).ready(PI.onReady);
是否一个比下有更好的表现?更容易调试?
想法?注释?
答
第二个变体是可重用的 - 您可以重复使用slideCb和其他处理程序来处理其他控件的其他事件。
答
如果你有一个有很多匿名函数的栈跟踪,需要花费更多的时间来找出错误发生的位置以及错误发生的位置。所以加1秒。
事件处理程序中的代码通常与处理程序获取注册的代码无关,因此应该位于单独的函数/模块中。加1秒。
对侦听器使用匿名函数也很糟糕,因为如果您必须删除此侦听器(大多数人不关心),您只能删除它们,而不必在意意地删除其他侦听器形式代码的其他部分。第二个加1。
将相关函数放入单个对象不一定是最好的。如果对不同的dom对象使用侦听器的行为,onReady函数通常很糟糕。
不关心性能。一个听众通常不会经常被称为重要的事情。如果是这样,那么其他地方很可能出现问题。
几件事:(1)这句话的意思是说“B比A好。你怎么看?”加载问题。 (2)你没有说出为什么你觉得第二个更好,尽管说是这样。 – 2011-02-07 13:39:18