这段js代码是什么意思?

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

这三个点

跟这个的区别

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)); 
阅读 1.8k
3 个回答

先看第二个

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

这个是很普通的函数回调,监听到‘dragend’(是个事件吗?),触发function(marker, f),函数(不会立即执行)内有return就return

再看第一个

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

跟第二个类似,但是注意括号,绑定'dragend'(事件?)时就会触发function(marker,f),并且返回函数 return function() ,最终触发'dragend'(事件?)时执行return function()

(function a(){console.log(10)})(); //声明函数a,并且立即执行
(function(a,b){
    
})(a,b)  IIFE, 表示该函数立即执行,得到的自然是执行后的结果

一个函数的输入或输出也是函数,这个函数就叫高阶函数。

定义匿名函数并立即执行,这里可能主要是一种闭包处理。
注意里面变量名其实意义不完全一样的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题