掌握BOM系列基础:setTimeout与setInterval详解

0 下载量 69 浏览量 更新于2024-09-01 收藏 159KB PDF 举报
本文档深入探讨了BOM(Browser Object Model)系列的第一篇文章,焦点集中在JavaScript中的两个核心定时器函数:setTimeout()和setInterval()。这两个方法在网页开发中扮演着重要角色,帮助开发者实现异步操作,提高用户体验。 setTimeout()方法允许开发者在指定的毫秒数后执行一次特定的函数或字符串。它接收两个参数:第一个是回调函数,第二个是延迟执行的时间(单位为毫秒)。返回一个整数值,作为定时器ID,用于后续取消执行。例如,代码`var Timer = setTimeout(function() { console.log(Timer); }, 1000);`展示了如何在1秒后输出定时器的ID。然而,尽管字符串形式看起来简洁,但不推荐使用,因为会导致解析开销。 setTimeout()方法的第二个参数可以省略,默认为0,但这可能导致意外的结果。如代码`var Timer = setTimeout(function() { console.log(Timer); }); console.log(0);`中,虽然看似0应该先输出,但实际上由于setTimeout的执行顺序问题,0会先于定时器回调。 对于更复杂的函数执行,setTimeout()允许额外参数传递,但在IE9及更低版本中,仅支持两个参数。为兼容性考虑,可以使用立即执行函数表达式(IIFE)包裹参数,如`setTimeout((function(a, b) { return function() { console.log(a + b); }; })(1, 1), 1000);`,或者将带有参数的函数定义在定时器之外,通过匿名函数调用,如`function test(a, b) { console.log(a + b); } setTimeout(function() { test(1, 1); }, 1000);`。 setInterval()函数则是周期性地重复执行指定的函数,直到调用 clearInterval() 方法停止。它同样接受回调函数和延迟时间,但通常用于实现定时刷新、轮询等场景。与setTimeout不同,setInterval返回的定时器ID始终相同,除非显式清除。 了解并熟练掌握这些定时器函数是前端开发者必备的技能,它们有助于优化代码性能,提高网页的响应性和可维护性。通过本文提供的实例和兼容性技巧,读者可以在实际项目中灵活运用setTimeout和setInterval,以实现所需的动态效果。