在以下代码中,我将变量 t 和 hoverCalled 保存在闭包范围内。如果我将它们保存在 jQuery.data 属性中,性能会更好吗?我听说创建闭包范围在性能方面有点昂贵。但是,我不知道它是否比替代品更糟糕。
hoverDelay = function(hoverIn,hoverOut) {
var t=null;
var hoverCalled=false;
return {
hoverIn:function() {
t = setTimeout(function() {
//$(self).data('hoverCalled',true);
hoverCalled=true;
hoverIn();
}, 500);
$(this).data('timeout', t);
},
hoverOut:function() {
if (hoverCalled){
hoverOut();
hoverCalled=false;
} else {
//var t=$(self).data('timeout');
//clearTimeout($(this).data('timeout'));
t&&clearTimeout(t);
}
}
};
};