这是我的零件代码,但是一位朋友说该变量(如getStyle,getOffsetWidth,getOffsetHeight,log)不会释放,所以我想知道为什么变量不会释放,以及如何对其进行优化,谢谢!
var Util = (function() {
"use strict";
var getStyle = function(node) {
var style = null;
if (window.getComputedStyle) {
style = window.getComputedStyle(node, null);
} else {
style = node.currentStyle;
}
return style;
};
var getOffsetWidth = function(style) {
return parseInt(style.width, 10) +
parseInt(style.paddingLeft, 10) +
parseInt(style.paddingRight, 10) +
parseInt(style.marginLeft, 10) +
parseInt(style.marginRight, 10);
};
var getOffsetHeight = function(style) {
return parseInt(style.height, 10) +
parseInt(style.paddingTop, 10) +
parseInt(style.paddingBottom, 10) +
parseInt(style.marginTop, 10) +
parseInt(style.marginBottom, 10);
};
var log = function() {
if (window.console && window.console.log) {
window.console.log(arguments);
}
};
return {
getStyle: getStyle,
getOffsetWidth: getOffsetWidth,
getOffsetHeight: getOffsetHeight,
log: log
};
}());
最佳答案
您的朋友可能是指变量getStyle
,getOffsetWidth
等包含在返回的方法的闭包中的事实。这一点效率不高,因为这些变量不再使用。
在这样的简单情况下,Util
对象中的函数没有充分利用外部函数的闭包,因此没有理由不这样做:
var Util = {
getStyle: function(style) {
return parseInt(style.width) + ...
},
getOffsetWidth: ...
};