Javascript 下划线JS source–;这是如何保存字节的?

Javascript 下划线JS source–;这是如何保存字节的?,javascript,underscore.js,minify,Javascript,Underscore.js,Minify,在阅读时,我在开头遇到了这一行: 在缩小(但不是gzip)版本中保存字节: 这里到底做了什么?通过避免换行来节省字节 对我来说,这似乎相当模糊,特别是因为这是这种技术的唯一出现,这让我相信可能还有更多 var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; 是 保存的字节与缺少的换行符无关,因为如果代码中存在换行符,缩微器将删除它们 通过声明一个变量来替换Arr

在阅读时,我在开头遇到了这一行:

在缩小(但不是gzip)版本中保存字节:

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

对我来说,这似乎相当模糊,特别是因为这是这种技术的唯一出现,这让我相信可能还有更多

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

保存的字节与缺少的换行符无关,因为如果代码中存在换行符,缩微器将删除它们

通过声明一个变量来替换
Array.prototype
,并假设minifier将用一个字母的变量名替换变量名(这是可能的),您将在每次出现用
ArrayProto
替换的
Array.prototype
时获得14个字符。迷你们当然不能改变数组。原型,因为它不会有不同的名字

如前所述,gzip代码的增益是可疑的,很难测量,因为压缩对于重复的文本更有效

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

您可以在更常见的模式中找到伪装下的相同优化:

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

在评论中解释他的具体语言:gzip将替换整个长重复部分,而只要一分钟就可以重复它们,因此他将长重复缩短为较小的重复。
ArrayProto
Array.prototype
…谢谢,实际上我认为这非常聪明!
var ArrayProto = Array.prototype;
var ObjProto = Object.prototype;
var FuncProto = Function.prototype;
(function(window, undefined){
   // window and undefined are replaced by one letter
   // names by the minifier
})(window, undefined);