我正在尝试理解用于改进JavaScript缩小的优化

时间:2013-02-13 21:57:32

标签: javascript optimization minify

在深入了解uniform.js源代码时,我发现了这一点(在#333上):

/**
* Meaningless utility function. Used mostly for improving minification.
*
* @return false
*/
function returnFalse() {
  return false;
}

在某些地方调用此函数(趋势似乎是在JavaScript Object Literal中使用false值的情况下(来自行#351

bindMany($elem, options, {
  'selectstart dragstart mousedown': returnFalse
});

但不是在明确返回false的情况下。我的问题是为什么要说改善缩小?我的第一个想法是,通过将false拉入函数,该函数可以重命名为'a',因此预期false的位置可以表示为a(),但这不是似乎为我认为执行中额外功能的成本提供了很多好处。我有什么不明白的事情吗?

1 个答案:

答案 0 :(得分:6)

你应该注意到在你的例子中returnFalse没有被调用,它已经被传递了。它用于防止提供事件的默认行为。

这种具有实用程序功能以防止默认行为的技术可以防止创建新的匿名函数以多次执行相同操作的需要:

$('foo').on('something', function () {
    return false;
});
//minified to something like:
$(a).on(b,function(){return !1});

VS

$('foo').on('something', returnFalse); 
//minified to something like:
function c(){return !1}
$(a).on(b,c);

所有人都说,这是一种误导的缩小方式,因为jQuery允许false代替事件处理程序来阻止默认行为:

$('foo').on('something', false);
//minified to something like:
$(a).on(b,!1);