3

我正在我的脚本中检查三个窗口事件:

window.onload = updateData;
window.onresize = updateData;
window.onscroll = updateData;

我怎样才能优化我的代码并将其写在一行中?我试过了:

window.onload || window.onresize || window.onscroll = updateData;

但它不起作用。

4

2 回答 2

7
window.onload = window.onresize = window.onscroll = updateData;

如果这是一个正常的变量赋值,例如: a = 1 这将返回 1,

所以在 中b = a = 1,b var 从先前的赋值中接收值 1,并且当前的 on 也返回 1 作为结果。

另一方面,我建议 updateData 函数将实现一些竞争条件控制,以防止该例程同时运行。

于 2013-06-25T17:10:32.363 回答
3

如果您有很多要分配的属性,那么

['onload', 'onresize', 'onscroll'].forEach(function(x){window[x] = updateData})

最终会更短。

于 2013-06-25T17:43:59.607 回答