日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript——定时器(setTimeout/setInterval)

發布時間:2024/10/5 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。