gpt4 book ai didi

javascript - Underscore JS 源代码——这是如何节省字节的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:30 25 4
gpt4 key购买 nike

在阅读 commented underscore source code 时,一开始就遇到了这一行:

Save bytes in the minified (but not gzipped) version:

  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;

这里到底做了什么——通过避免换行来节省字节?

对我来说,这似乎相当晦涩,尤其是因为这是该技术的唯一出现,这让我相信它可能还有更多。

最佳答案

var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;

equivalent

var ArrayProto = Array.prototype;
var ObjProto = Object.prototype;
var FuncProto = Function.prototype;

保存的字节与丢失的换行符无关,因为如果它们出现在代码中,缩小器会删除它们。

通过声明一个变量来替换Array.prototype , 并假设 minifier 将用一个字母的变量名替换变量名(这很可能),您每次出现 Array.prototype 都会获得 14 个字符替换为 ArrayProto .缩小器当然不能改变Array.prototype因为找不到不同的名称。

如前所述,gzipped 代码的增益是可疑的且难以衡量,因为压缩对具有重复的文本更有效。

这是一个微优化。当你确实使用了很多可以重命名的表达式时,你可以尝试将它分配给一个变量并重用该变量,但前提是你测量增益 如果文件轻几个字节很重要(这是罕见的)如果您确信自己不会妨碍可读性和可维护性(不过请注意,通过用名称替换表达式也可以提高可读性)。

您会在更常见的模式中发现伪装下的相同优化:

(function(window, undefined){
// window and undefined are replaced by one letter
// names by the minifier
})(window, undefined);

关于javascript - Underscore JS 源代码——这是如何节省字节的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com