js 與閉包

因為 javascript 是一種直譯語言,程式的撰寫先後順序就很重要,如果草率為之的話,有時候會產生時續性的bug,很難偵錯。很多時候只要把把自己想成一個工人,只能一條一條的按照程式碼去執行,反而比較不會錯。

好比說,你在閉包裡面設定了一個變數m,這個變數是指向一個 DOM 物件,但可能當該閉包宣告時,那個 DOM 物件還沒有生成,但後來生成了,那麼 m 就會永遠保留那時候的狀態,認為該 DOM 物件不存在,不細心一點很難發現,因為直接在 console 裡面輸入一模一樣的 jQuery selector 明明是有東西的。這就不是 selector 語法的問題,而是時間順序的問題。

再考慮更精細,上述問題有可能更難以察覺,因為生成 DOM 物件的程式碼,只要寫的位置不同,他生成的時間可能就會提早,這樣我們就會認為整個程式碼正常,哪一天只要稍稍動了一下順序,就可能發生問題,這時候 debug 就會變得很困難。

留言

熱門文章