[閒聊] 寫JS時要注意scope的問題

看板Ajax作者 (夏天到了,冷不起來了說)時間15年前 (2010/10/29 15:03), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
前陣子寫了一個用到JS的Grid View 期間偶爾會出現一些小小bug,不過一直抓到觸發bug的原因在那。 所以一直就沒有花時間去試。 這兩天拿這個Grid的Script套用在新功能上時。 就發現了當呼叫另一個功能時會讓Grid的bug發生, 追查之下.. Grid在初始化時,會丟一些參數進去 在Grid的程式裡我是這樣接的 function grid_view(Params){ p = $.extend({ (JQuery的物件繼承) ..... },Params) } 然後另一個功能是這樣寫 function popup(Params){ p = $.extend({ ..... },Params) } 相信到這裡應該就會有人看出問題在那裡了... 我忘了在grid_view跟popup函式裡把 p 用上var 了... 根據scope的方法.. popup裡的p會蓋掉grid_view的p 難怪有時grid_view會無法正常作動 囧>" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.160.93

10/29 16:42, , 1F
沒寫 var 時,會拿global 的,也就是 window.p 來用,所以
10/29 16:42, 1F

10/29 16:42, , 2F
這樣寫會是彼此都蓋到 window.p .
10/29 16:42, 2F

10/29 16:43, , 3F
說global不太對,應該說是 context 的 , default context 是
10/29 16:43, 3F

10/29 16:43, , 4F
window .
10/29 16:43, 4F
文章代碼(AID): #1Cod6_s8 (Ajax)
文章代碼(AID): #1Cod6_s8 (Ajax)