【问题标题】:I'm trying to understand an optimization for improving minification in JavaScript我正在尝试了解用于改进 JavaScript 缩小的优化
【发布时间】:2013-02-13 21:57:32
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我相信这比在其中放置一个返回 false 的匿名函数要好。据我所知,jQuery 的核心还有一个 returnFalse() 函数。 编辑: 是的,在1.9.1 版本中仍然如此。
  • 哦,我没有注意到函数被返回而不是返回值
  • 显然,如果代码符合我的想法,那么您将处理程序绑定到那些返回 false 的事件,并且通过在 jQuery 中的事件处理程序中返回 false 实际上与调用 event.preventDefault() 相同和event.stopPropagation()
  • 虽然,如果一个库使用 jQuery,可以直接将 false 分配给它,而不是返回 false 的函数,因为 false 被视为与我评论相同的特殊值以上。

标签: javascript optimization minify


【解决方案1】:

您应该注意,在您的示例中,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);

【讨论】:

  • 是的$(a).on(b,!1); 似乎正在阅读谷歌关闭的输出。 =]
猜你喜欢
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-02
相关资源
最近更新 更多