3

在深入研究uniform.js源代码时,我发现了这个(在#333行):

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

此函数在某些地方被调用(趋势似乎是false在这样的 JavaScript 对象文字中使用值的情况下(从第#351行开始)

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

但不是在显式返回 false 的情况下。我的问题是为什么说这可以改善缩小?我的第一个想法是,通过拉false入一个函数,可以将函数重命名为“a”,因此false可以将预期的地方表示为a(),但这似乎并没有为我认为的执行中额外功能的成本。有没有更明显的东西我不明白?

4

1 回答 1

6

您应该注意,在您的示例returnFalse中没有被调用,而是被通过了。它被用来防止提供的事件的默认行为。

这种使用实用函数来防止默认行为的技术可以避免创建新的匿名函数来多次执行相同的操作:

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

对比

$('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);
于 2013-02-13T22:05:24.660 回答