練習1-1:<br>JS

(6)自訂函式

(A)結果

var nowAll;
catchTime();
document.getElementById('interTime').innerHTML = '開啟時間:<br>'+ nowAll;

function catchTime(){
		//上述(1)、(2)、(4)、(5)合併
nowAll = nowY +'年'+ nowM +'月'+ nowD +'日星期'+ nowW +' ' + nowH+':'+ nowI+':'+nowS ;
}

本網參考參考連結1參考連結2

何謂全域/區域變數(本網)

(B)window.setInterval

//設定每1000毫秒(1秒)執行一次function

//第0秒顯示
    $('#runTime').html('現在時間:<br>'+ nowAll);

//1秒後,循環重覆顯示
window.setInterval(runTime, 1000);

function runTime(){
	catchTime();
	$('#runTime').html('現在時間:<br>'+ nowAll);
}

參考連結1參考連結2

(C)window.setTimeout

//setTimeout,在1000毫秒後執行【一次】

runTime();

function runTime(){
	catchTime();
	$('#runTime').html('現在時間:<br>'+ nowAll);
	window.setTimeout(runTime, 1000);
}

參考連結1參考連結2

 

Note:

第一眼看上去這兩段代碼在功能上是等價的,但事實上卻不是。
值得注意的是,
(1)setTimeout這段代碼會在每次回調函數執行之後至少需要延時10ms再去執行一次
(可能是更多,但是不會少)。
(2)setInterval會每隔10ms就去嘗試執行一次回調函數,不管上一個回調函數是不是還在執行。
如果interval回調函數執行需要花很長時間的話(比指定的延時長),interval有可能沒有延遲背靠背地執行。

原文網址:https://read01.com/a085EA.html