摘要:[JavaScript] 用 var是好習慣。
這次回報的症狀是 IE不行,其他瀏覽器沒問題…我覺得這都可以當預設值略過不看了。
程式功能是寫 cookie,針對不同的使用者給出不同的建議…嗯,瀏覽器處理 cookie的行為差別嗎,沒有任何想法,只能看 code找 bug。
看了幾遍交錯的程式碼,發現 IE的 cookie值不對,出現 "window[object]..."這樣的值(下次應該先看 document.cookie內容說不定可以省點時間)。
簡化後可以重現問題的程式片段:
for(item in {a:1,b:2})console.log(item);
顯示 a, b。簡單。簡單到覺得沒用 var宣告 item應該也不會出錯,所以那時候就快樂的略過繼續看其他糾結的區塊…每個變數都沒有 var,這個的作用範圍只有三行,總覺得是其他跨 function共用變數的問題…離題了,公佈答案,這次錯誤原因是 item在 ie會指到 window,只有 ie。用 var在當前作用域宣告 item屬性即可解決。
這個狀況是 ie的錯嗎?程式設計師應該先檢視自己寫出來的東西,把指責的時間用在充實自己比較實在。