2011-03-01 53 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

相关问题