$('.dom').on('click', function () {
function test() {
console.log('abc');
}
});
函數test 在每次點擊的時候被聲明然後click 回調執行完被GC 如果dom 不止被一次點擊那麼每次的點擊回調都多了一步函數聲明我記得在jshint 的規範裡都不允許函數聲明寫到循環裡現在的情況不是類似嗎?那麼如何處理才是最完美的我應該把test 函數聲明位置提到外部嗎那麼這樣又會造成閉包導致test 函數無法被回收的如果用戶只用到一次這塊邏輯的話顯然是虧的到底該如何權衡? ~
循環裡跟函數裡是不一樣的。
循環裡並不是一個獨立的作用域,所以在裡面宣告函數會宣告提前,函數裡則不會。 jshint防止的是重複定義。
b只有在a函數執行的才會被聲明,並且如果沒有任何外部引用指向b,則在函數執行完下一輪回收後被銷毀。
其實差異不大。
test 用完就丟了,並不會無法回收。
如果只執行一次的話, 可以這樣:
定義的foo不會影響外面, 用完立即卸載等待回收.
乾乾淨淨, 深藏功與名