鍍金池/ 問答/C  HTML/ 這段js代碼是什么意思?

這段js代碼是什么意思?

google.maps.event.addListener(marker, 'dragend', (function(marker, f) {//這里
                    return  function()//這里
                    {
                    
                    })(marker, f));//這里

這三個(gè)點(diǎn)

跟這個(gè)的區(qū)別

google.maps.event.addListener(marker, 'dragend', function(marker, f) {//這里
          
});

google.maps.event.addListener(marker, 'dragend', (function(marker, f) {
                        return  function()
                        {
                               if(confirm("Are you sure you want to change lat/lng?")){   
                            var park_id = ID[f];
                            var lat = this.getPosition().lat();
                            var lng = this.getPosition().lng();
                                    $.ajax({
                              type: "POST",
                              url: "<?php echo base_url() ?>Admin/updateParkid", 
                              data: {park_id: park_id, latitude: lat, longitude: lng},
                              dataType: '',
                              success: function(result){
                                alert(result);

                                //marker.setIcon(iconBase);
                                        }
                              });            
                            } }
                         })(marker, f)); 
回答
編輯回答
陌上花

先看第二個(gè)

google.maps.event.addListener(marker, 'dragend', function(marker, f) {//這里
          
});

這個(gè)是很普通的函數(shù)回調(diào),監(jiān)聽到‘dragend’(是個(gè)事件嗎?),觸發(fā)function(marker, f),函數(shù)(不會(huì)立即執(zhí)行)內(nèi)有return就return

再看第一個(gè)

google.maps.event.addListener(marker, 'dragend', (function(marker, f) {//這里
    return  function()//這里
    {
    
    })(marker, f));//這里

跟第二個(gè)類似,但是注意括號(hào),綁定'dragend'(事件?)時(shí)就會(huì)觸發(fā)function(marker,f),并且返回函數(shù) return function() ,最終觸發(fā)'dragend'(事件?)時(shí)執(zhí)行return function()

(function a(){console.log(10)})(); //聲明函數(shù)a,并且立即執(zhí)行
2017年12月13日 10:54
編輯回答
未命名

定義匿名函數(shù)并立即執(zhí)行,這里可能主要是一種閉包處理。
注意里面變量名其實(shí)意義不完全一樣的

2018年4月11日 02:16
編輯回答
寫榮
(function(a,b){
    
})(a,b)  IIFE, 表示該函數(shù)立即執(zhí)行,得到的自然是執(zhí)行后的結(jié)果

一個(gè)函數(shù)的輸入或輸出也是函數(shù),這個(gè)函數(shù)就叫高階函數(shù)。
2017年9月15日 18:09