我會做更多的事情是這樣的:
// Make sure Date.now exists in your environment
Date.now = Date.now || function() { return Number(new Date()); };
var time = 0,
start = Date.now(),
intervalId;
intervalId = setInterval(function() {
var seconds, display;
// get the exact time since the timer was started
time = Date.now() - start;
// get the number or seconds, rounded down
seconds = Math.floor(time/1000);
display = '' + seconds;
// pad the beginning of your display string with zeros
while (display.length < 4) {
display = "0" + display;
}
console.log(display);
}, 100);
setInterval
並不確切。這段代碼可以確保當顯示器可以達到近一秒(理論上)時,您所追蹤的實際時間始終是自您啓動計時器以來經過的確切時間量。但是這個代碼每十分之一秒就會更新一次顯示,所以它幾乎不會超過幾毫秒。
從這裏你可以找出更聰明的方式來更新顯示屏,以確保你具有所需的準確性水平。如果這需要非常準確,那麼你可以確保你顯示到第二個十分之一。
建議:1.使用分號結束您的行。它們是可選的,但不是真的(閱讀Javascript爲什麼好的部分)2.始終把你的大括號放在同一行。這不是一種風格的東西,在一個新的線上的括號可能會導致怪異的錯誤。 3.你的函數目前有兩個名字,只用一個 - 你可以執行'function(){...'3.你每次掃描整個文檔爲'$(。counter)',你應該把它存儲在變量,以便您不必掃描。 – 2012-02-13 21:27:11
@GeorgeMauer瞭解換行符*不會結束語句的情況比始終盲目地使用分號更重要,因爲即使是使用分號的用戶仍然會包含一些跨越多行的語句。在這些情況下,在末尾添加分號不會節省您的時間。請參閱[這篇文章](http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding) – benekastah 2012-02-13 21:53:22
斷行和分號的細節不是我的正在這裏,但我很欣賞這個建議。 – 2012-02-14 01:41:46