我碰到過一個不尋常的JS問題。Javascript對象的值在定義時顯示爲NaN
JS小提琴:http://jsfiddle.net/RD5a4/
注意,小提琴不會產生任何結果,只是控制檯日誌。
引擎收錄:http://pastebin.com/raw.php?i=AcH79zZv
我試圖創建一個計時器和我有一個是這樣定義的對象(代碼修剪易讀性):
initiate_timer : function(options) {
timer = {
id: options.id || "ticker",
to_display: options.to_display || ['days', 'hours', 'minutes', 'seconds'],
target_date: options.target_date || null,
time_left: {
in_days : "0",
in_hours : "0",
in_minutes : "0",
in_seconds : "0"
}
}
}
再往下我計算剩餘時間和將其分成幾天/小時/分鐘/秒,以便我可以顯示它。當我將對象,計時器顯示到控制檯時,time_left正確顯示。
console.log(timer);
Object {
time_left: Object {
in_days: "00"
in_hours: "00"
in_minutes: 45
in_seconds: 54
}
}
但是,如果我嘗試直接訪問time_left,我突然只能得到NaN。
console.log(timer.time_left);
Object {
in_days: NaN,
in_hours: NaN,
in_minutes: NaN,
in_seconds: NaN
}
任何想法?請讓我知道我是否可以澄清任何事情,因爲這肯定是一個令人困惑的問題。
在此先感謝
我懷疑是異步的錯誤,或延遲數呈現出了問題,但我們不」沒有足夠的代碼。你能在小提琴中重現這個問題嗎? –
謝謝@dystroy,我已經添加鏈接到一個JSFiddle產生的問題。還有JS的pastebin(是否有更好的方法)。兩個console.log行緊挨在一起,這是令人困惑的部分 – raydeneg