作者alair99 (I think home)
看板Ajax
標題[問題] 請問return function的意義
時間Mon Aug 25 17:08:04 2014
程式碼請參考
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://webptt.com/m.aspx?n=bbs/Ajax/M.1408957694.A.C67.html
1F:推 qwer820404: 如果沒搞錯的話 是閉包嗎 08/25 21:53
2F:推 Panasonic: 跟content比較有關,立即執行式餵進去返回一個callback 08/25 23:39
3F:推 Panasonic: 用閉包來作一個wrapper,很常見的方式 08/25 23:42
4F:推 s25g5d4: 是野生的閉包沒錯, 因為事件觸發一定在 for 迴圈結束後 08/26 00:05
5F:→ s25g5d4: 若沒有用閉包包起來 那麼 content 永遠是迴圈最後一次 08/26 00:06
6F:→ s25g5d4: 的資料, 用閉包包起來才可以保存 content 不被蓋掉 08/26 00:06
7F:→ s25g5d4: 至於那個 this 跟閉包無關, 就只是 handler 執行時可能 08/26 00:07
8F:→ s25g5d4: 用了 call 或 apply 把 this 改成 marker 08/26 00:07
9F:→ s25g5d4: 稍微修改一下就能驗證 this === marker 08/26 00:08
10F:→ alair99: 謝謝樓上各位大大,我再找時間研究一下 :) 08/27 12:09