Javascript 读取(但不指定)属性:欺骗还是无用?

Javascript 读取(但不指定)属性:欺骗还是无用?,javascript,Javascript,在现有的应用程序中,我只对以下代码感兴趣: function _repaint(elem) { elem.style.display = 'none'; elem.offsetHeight; // jshint ignore:line elem.style.display = ''; } 第二行对我来说似乎毫无用处,而且我在删除它时没有注意到应用程序有任何变化。然而,对于jshint,它被自动忽略。那么,我想知道它的目的是什么 JavaScript引擎不会删除这行无用的

在现有的应用程序中,我只对以下代码感兴趣:

function _repaint(elem) {
    elem.style.display = 'none';
    elem.offsetHeight; // jshint ignore:line
    elem.style.display = '';
}
第二行对我来说似乎毫无用处,而且我在删除它时没有注意到应用程序有任何变化。然而,对于
jshint
,它被自动忽略。那么,我想知道它的目的是什么

JavaScript引擎不会删除这行无用的优化吗?

第二行

elem.offsetHeight

看起来没有效果,但实际上它有一个巨大的影响:计算
。任何元素的远视
,都会迫使浏览器重新绘制/回流整个文档。这可能是针对某个特定平台/设备上一些模糊的浏览器错误的黑客攻击


编辑:如果你确定这个bug已经不存在了,或者因为你不再支持这个平台而不需要它,我建议你删除这一行(特别是如果它被多次调用的话)。这是一个代价高昂的操作,出于性能原因,应该避免使用。

因为它是一个DOM属性,所以在访问它时可能会发生一些神奇的事情。由于前一行的CSS发生了更改,它会强制渲染引擎重新计算布局。如果此代码在git(或其他源版本系统)中,则需要找到负责人以找出答案:)-技巧:)但这是2010年的问题,我不知道它在2015年是否有效。如果一个属性有一个getter函数,那么在访问该属性时会调用该函数,即使没有使用该值。写这句话的人应该被带回来,用湿意大利面狠狠地打。为什么?因为这是一个注释不是可选的上下文。不具备
//WebKit错误解决方法是不可原谅的:http://stackoverflow.com/questions/3485365/
,或类似产品。