浏览器中的Commonjs模块不更新局部变量

时间:2017-11-07 08:39:21

标签: javascript browser module

我在浏览器中使用window.innerWidthwindow.innerHeight,我希望缓存这些值以防止每次访问它们时重新绘制。我使用browserify进行捆绑,所以我写了这个模块:

var w = window.innerWidth;
var h = window.innerHeight;
var timeout = false; // holder for timeout id
var delay = 250; // delay after event is "complete" to run callback

// window.resize callback function
function setDimensions() {
  w = window.innerWidth;
  h = window.innerHeight;
}

// window.resize event listener
window.addEventListener('resize', function() {
  clearTimeout(timeout);
  timeout = setTimeout(setDimensions, delay);
});

module.exports = { w, h }

但是,导入时,在调整视口大小时不会更新尺寸。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用module.export导出变量时,您将获得变量的副本而不是引用。当您更新局部变量w和h时,导出不会改变。