[问题] 请问return function的意义

楼主: alair99 (I think home)   2014-08-25 17:08:04
程式码请参考 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大神写的,
但是现在竟然看不懂了 = =|||
作者: qwer820404 (GB2)   2014-08-25 21:53:00
如果没搞错的话 是闭包吗
作者: Panasonic (ideas for life)   2014-08-25 23:39:00
跟content比较有关,立即执行式喂进去返回一个callback用闭包来作一个wrapper,很常见的方式
作者: s25g5d4 (function(){})()   2014-08-26 00:05:00
是野生的闭包没错, 因为事件触发一定在 for 循环结束后若没有用闭包包起来 那么 content 永远是循环最后一次的资料, 用闭包包起来才可以保存 content 不被盖掉至于那个 this 跟闭包无关, 就只是 handler 执行时可能用了 call 或 apply 把 this 改成 marker稍微修改一下就能验证 this === marker
楼主: alair99 (I think home)   2014-08-27 12:09:00
谢谢楼上各位大大,我再找时间研究一下 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com