[英]JavaScript setInterval
這是關於setInterval的教程中的一個例子,但它並沒有為我的新手大腦解釋它。 如果你能回答這些問題,我將不勝感激
i)1000 millesecond計時器是否表示每秒觸發moveElement函數? 換句話說,在它運行后,它將等待1秒然后再次運行它?
ii)moveElement的目的是每次運行時將“redBox”向左移動10個像素? 這就是為什么在函數中使用“px”的原因
iii)moveElement第一次運行后,x(x + = 10)的新值是否替換var x = 0中的0值? 即它是否存儲在程序頂部的變量x中的函數之外?
var x = 0;
setInterval(moveElement,1000);
function moveElement() {
x+=10;
var left = x + "px";
document.getElementById("redbox").style.left=left;
i)是的,至少在理論上。 JavaScript( 大部分 )單線程性質意味着它不會完全是1000毫秒。
ii)通過向左添加10px將其向右移動10px。 Px是像素的縮寫,是像素的縮寫。
iii) x
在函數之外定義,因此每次都會持續存在。 每次調用該函數時, x
都會大10。 如果在函數中定義了x
,則每次調用它都會為10。
i)setInterval將每秒運行moveElement函數。 如果是setTimeout,它只會在1秒后運行一次。
ii)看起來就是它的作用。
iii)在這種情況下,x未在函數moveElement中的任何位置聲明,因此它會嘗試查找它在頂部執行的全局變量。 所以是的,它會將新值存儲在函數外部的x中。
i)這將幫助您理解setTimeout和setInterval: http : //www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/
ii)添加“px”(表示“像素”)以將有效屬性值分配給具有單位“px”的“style.left”。
iii)是的,它取代了值,因為var x已在函數外聲明,因此是一個全局變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.