2011-03-01 51 views
0

我是一個初學者,正在閱讀關於JavaScript中日期的教程,並給出了這個例子來比較兩個事件之間的時間。爲什麼這兩個JavaScript Date對象不一樣?

我不明白爲什麼firstDate和var secondDate不會是完全相同的時間? var secondDate中的新Date對象只會在觸發doEvent後花費時間,而firstDate則花費window.onload的時間?

另外,爲什麼變量firstDate沒有「var」標籤,而變量secondDate呢?那麼這只是作者的一個錯字,或者它在某種程度上意義重大?

var firstDate; 
window.onload=startTimer; 

function startTimer(){ 
firstDate = new Date(); 
document.getElementById("date").onclick=doEvent; 
} 

function doEvent() { 
var secondDate = new Date(); 
alert((secondDate - firstDate)/1000); 
} 
+1

Ofcourse在var secondDate中新的Date對象只會觸發doEvent一次,因爲連續編寫另一個方法的方法不會執行它,而是在它綁定到的事件上執行。 – 2011-03-01 05:06:42

回答

3

你的猜測是完全正確的。 firstDatewindow.load事件觸發的時間,而secondDate是點擊ID爲date的元素的時間。


在回覆:您的編輯,有一個var去與firstDate以及 - 它是startTimer範圍之外。這是而不是一個錯字。 firstDate需要定義在startTimerdoEvent函數的範圍之外,以便它在doEvent函數中具有有意義的值。

您可能需要閱讀JavaScript scoping

+0

o.k.,謝謝。你能回答我剛剛添加到OP的第二個問題:爲什麼firstDate沒有var標籤,而secondDate呢? – mjmitche 2011-03-01 05:06:31

+0

@mjmitche:我只是做了,看我的編輯:) – 2011-03-01 05:09:43

+0

謝謝。爲什麼didn't var secondDate需要在函數範圍之外定義? – mjmitche 2011-03-01 05:11:36

相關問題