javascript
JavaScript——定时器(setTimeout/setInterval)
基本概念?
js 定時器有以下兩個方法:
- setInterval() :按照指定的周期(以毫秒計)來調用函數或計算表達式。方法會不停地調用函數,直到 clearInterval() 被調用或窗口被關閉。
- setTimeout() :在指定的毫秒數后調用函數或計算表達式。
setInterval()
語法
setInterval(code,millisec,lang)| code | 必需。要調用的函數或要執行的代碼串。 |
| millisec | 必須。周期性執行或調用 code 之間的時間間隔,以毫秒計。 |
| lang | 可選。 JScript | VBScript | JavaScript |
以下實例在每 1000 毫秒執行 clock() 函數。實例中也包含了停止執行的按鈕:
<html> <body><input type="text" id="clock" /> <script type="text/javascript"> var int=self.setInterval("clock()",1000); function clock() { var d=new Date(); var t=d.toLocaleTimeString(); document.getElementById("clock").value=t; } </script><button onclick="int=window.clearInterval(int)">停止</button></body> </html>setTimeout()
語法
setTimeout(code,millisec,lang)| code | 必需。要調用的函數后要執行的 JavaScript 代碼串。 |
| millisec | 必需。在執行代碼前需等待的毫秒數。 |
| lang | 可選。腳本語言可以是:JScript | VBScript | JavaScript |
實例演示如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(runoob.com)</title> </head> <body><p>點擊按鈕,在等待 3 秒后彈出 "Hello"。</p> <button onclick="myFunction()">點我</button><script> function myFunction() {setTimeout(function(){alert("Hello")},3000); } </script></body> </html>常見問題
?1、出現變量未定義(xxx is not defined)?
常見為回調函數未定義
setTimeout方法是掛在window對象下的。《JavaScript高級程序設計》第二版中,寫到:“超時調用的代碼都是在全局作用域中執行的,因此函數中this的值在非嚴格模式下指向window對象,在嚴格模式下是undefined”。在這里,我們只討論非嚴格模式。
//String Code function test (){var a=1;setTimeout("a++",100);//a is not defined; } test(); //Lambda表達式 function test (){var a=1;setTimeout(function(){a++;console.log(a); //正常運行,卻打印出結果2;},100); } test();第一種形式(String Code)的情況,定時器匯總調用的是全局變量a,而上下文中定義的變量是局部變量,所以會報錯;
第二種形式(函數形式)可以這么理解:在這里匿名函數的使用形成了一個閉包,從而能訪問到外層函數的局部變量。只是這種閉包,跟常見的閉包不同,因為函數式放在setTimeout里面。
參考文章
https://www.runoob.com/w3cnote/js-timer.html
https://blog.csdn.net/pingwei_deng/article/details/80654696
https://blog.csdn.net/weixin_42371145/article/details/96880629
https://www.cnblogs.com/juneling/p/8946107.html
總結
以上是生活随笔為你收集整理的JavaScript——定时器(setTimeout/setInterval)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript——使用正则表达式提
- 下一篇: gradle idea java ssm