Javascript Jquery命名函数不作为回调函数使用

Javascript Jquery命名函数不作为回调函数使用,javascript,html,jquery,Javascript,Html,Jquery,也许这是一个愚蠢的问题,但我不明白为什么会发生 我有这个jquery代码: $(文档).ready(函数(){ //科罗卡·达托斯·杰森在各自的营地 函数setData(数据){ $('#id').val(data.id); $('#name').val(data.name); $('#status').val(data.status); $('#rating').val(data.rating); $('#description_short').val(data.description_sho

也许这是一个愚蠢的问题,但我不明白为什么会发生

我有这个jquery代码:

$(文档).ready(函数(){
//科罗卡·达托斯·杰森在各自的营地
函数setData(数据){
$('#id').val(data.id);
$('#name').val(data.name);
$('#status').val(data.status);
$('#rating').val(data.rating);
$('#description_short').val(data.description_short);
$('#description_long').val(data.description_long);
image\u url=(data.image\u url)?data.image\u url+“?”+新日期().getTime():'https://via.placeholder.com/512';
$(“#image”).attr('src',image\u url);
$('button[name=btn delete]')。prop('disabled',false);
};
$('button[name=btn edit]')。单击(函数(){
$('#模态形式').attr('action',“{{route('categories.index')}}/”+$(this.data('id'));
$.get(“{route('categories.index')}/”+$(this.data('id')+“/edit”)
.完成(功能(数据){
setData(数据);
});
});
其工作完全符合预期,但如果我这样做:

$('button[name=btn edit]')。单击(function(){
$('#模态形式').attr('action',“{{route('categories.index')}}/”+$(this.data('id'));
$.get(“{route('categories.index')}/”+$(this.data('id')+“/edit”)
.done(setData(数据));
});
});
我的表单没有填写,我无法理解为什么setData()不能作为回调函数

有人能帮我理解其中的区别吗


谢谢你的帮助

您可以通过传递
setData
的引用使其工作,而不是调用它,如:

$('button[name=btn-edit]').click(function(){
    ...
    
    $.get("{{route('categories.index')}}/" + $(this).data('id') + "/edit")
       .done(setData);
});

.done(setData(data))
调用
setData(data)
,其结果由
done
使用。。。所以,这是不同的。。。尝试
.done(设置数据)-相当于
.done(函数(x){return setData(x);})
-注意,
x
的名称完全不重要mmm我开始了解它了。。。但是为什么不需要将参数传递给函数呢?因为
.done
使用参数
(data,textStatus,jqXHR)
调用提供的函数-您可以通过检查回调
setData
接收的参数来查看这一点
console.log(arguments.length)
中的
setData
将输出
3
要知道的是,如果某件事情需要一个函数作为参数(如done)
setData
是一个函数,
setData()
是立即调用该函数的结果,在本例中,该函数不是函数(函数可以返回函数,但这是另一个教程的故事:p)另一种思考方式:
funcName(otherFunc(arg))
相当于
let temp=otherFunc(arg);姓名(临时)以这种方式编写时,可以看到另一个函数立即被调用。