Javascript Jquery命名函数不作为回调函数使用
也许这是一个愚蠢的问题,但我不明白为什么会发生 我有这个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
$(文档).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);姓名(临时)代码>以这种方式编写时,可以看到另一个函数立即被调用。