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

Jas*_*ske 3 javascript optimization minify

在深入了解uniform.js源代码的过程中,我发现了这一点(第333行):

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

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

bindMany($elem, options, {
  'selectstart dragstart mousedown': returnFalse
});
Run Code Online (Sandbox Code Playgroud)

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

zzz*_*Bov 6

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

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

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

VS

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

总而言之,这是一种误导的缩小手段,因为jQuery允许false代替事件处理程序来防止默认行为:

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