[問題] 請問return function的意義

看板Ajax作者 (I think home)時間9年前 (2014/08/25 17:08), 編輯推噓4(406)
留言10則, 4人參與, 最新討論串1/2 (看更多)
程式碼請參考 http://jsbin.com/sirotikujicu/1/edit?html,output 這個程式主要是用來讓使用者點選google map上的marker之後, 跳出一個infowindow,然後顯示其文字。 其中有一段 google.maps.event.addListener(marker,'click', function(content){ return function() { infowindow.setContent(content);//set the content infowindow.open(map,this); } }(content)); 請問這一段第2行為什麼要用return function ,跟第4行的this有關嗎? 禮拜六參考google大神寫的, 但是現在竟然看不懂了 = =||| -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.69.226 ※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1408957694.A.C67.html

08/25 21:53, , 1F
如果沒搞錯的話 是閉包嗎
08/25 21:53, 1F

08/25 23:39, , 2F
跟content比較有關,立即執行式餵進去返回一個callback
08/25 23:39, 2F

08/25 23:42, , 3F
用閉包來作一個wrapper,很常見的方式
08/25 23:42, 3F

08/26 00:05, , 4F
是野生的閉包沒錯, 因為事件觸發一定在 for 迴圈結束後
08/26 00:05, 4F

08/26 00:06, , 5F
若沒有用閉包包起來 那麼 content 永遠是迴圈最後一次
08/26 00:06, 5F

08/26 00:06, , 6F
的資料, 用閉包包起來才可以保存 content 不被蓋掉
08/26 00:06, 6F

08/26 00:07, , 7F
至於那個 this 跟閉包無關, 就只是 handler 執行時可能
08/26 00:07, 7F

08/26 00:07, , 8F
用了 call 或 apply 把 this 改成 marker
08/26 00:07, 8F

08/26 00:08, , 9F
稍微修改一下就能驗證 this === marker
08/26 00:08, 9F

08/27 12:09, , 10F
謝謝樓上各位大大,我再找時間研究一下 :)
08/27 12:09, 10F
文章代碼(AID): #1J-lp-nd (Ajax)
文章代碼(AID): #1J-lp-nd (Ajax)