详解JavaScript setTimeout与setInterval定时器的区别与用法

3 下载量 18 浏览量 更新于2024-08-30 收藏 83KB PDF 举报
在JavaScript编程中,`setTimeout`和`setInterval`是两个重要的定时器函数,广泛应用于实现各种延时和周期性任务。这两个函数的主要区别在于执行次数和控制方式。 `setTimeout`函数用于在指定的毫秒数后一次性执行一次函数或计算表达式。它的语法如下: ```javascript var timeoutID = window.setTimeout(func, [delay, param1, param2, ...]); var timeoutID = window.setTimeout(code, [delay]); ``` - `timeoutID`:返回的定时器ID,用于后续通过`clearTimeout`清除定时器。 - `func`:要执行的函数。 - `code`:作为可选的替换语法,可以是一个字符串代码块。 - `delay`:延迟执行的毫秒数,如果没有提供,默认为0。 例如,下面的代码在5秒后改变HTML元素的文本内容: ```javascript function timeout() { document.getElementById('res').innerHTML = Math.floor(Math.random() * 100 + 1); } setTimeout("timeout()", 5000); // 5秒后执行timeout函数 ``` 相比之下,`setInterval`函数则是在指定的时间间隔内重复执行函数或表达式,直到用户主动清除。其语法与`setTimeout`类似: ```javascript var intervalID = window.setInterval(func, [delay, param1, param2, ...]); var intervalID = window.setInterval(code, [delay]); ``` `setInterval`会无限循环执行,除非通过`clearInterval`函数停止: ```javascript var intervalID = setInterval(function() { // 每隔一段时间执行的代码 }, 3000); // 每隔3秒执行一次 // 清除定时器时调用 clearInterval(intervalID); ``` 在实际应用中,`setTimeout`适合一次性执行的任务,而`setInterval`适合周期性或者轮询的任务。但需要注意,过度频繁的`setInterval`可能会导致性能问题,因此在使用时需谨慎考虑是否真的需要持续不断地执行某个操作,并确保有适当的清理机制来避免不必要的资源浪费。