定义被脚本执行的回调函数

定义被脚本执行的回调函数

http://img1.sycdn.imooc.com//climg/5f499a6b09226cd407220462.jpg

老师早上好!

1、不太明白  getJSONP[name]    指向的是谁? 指向的是  name = "getJSONP" + a[r1] + a[r2] + a[r3]吗,如果指向是它就更弄不明白这个函数名名了

2、try{
  callback && callback(data);
}catch(e){
  //
}finally{
  // 最后删除该函数及 script 标签
  delete getJSONP[name];
  script.parentNode.removeChild(script);
}

这句代码的意思是  如果  getJSONP 函数中存在callbac 就执行callback && callback(data);,什么意思呢? callback(data)指的是本函数,那callback指向的是谁呢?还是我对  callback && callback(data);  理解错了

2、finally{
  // 最后删除该函数及 script 标签
  delete getJSONP[name];
  script.parentNode.removeChild(script);
}

老师说每一次跨域都会创建动态script标签,跨域多了,生成的函数就多了,什么意思呢?代码不是执行完一次就结束了嘛为什么会有每一次跨域,生成的函数指的是什么

老师说生成完之后对我们就没有作用了,所以要删除,不太明白

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2020-08-29 10:45:44

同学你好,问题解答如下:

1、getJSONP[name]指向的是发送请求时传入回调函数

http://img1.sycdn.imooc.com//climg/5f49bee6098f1c3607370479.jpg

前端后后端发送请求,携带了一个函数,那么后端返回的就是带有数据的回调函数。代码中定义这个函数,接收data数据。

name是变量,不能通过点的方式使用,传入的时候因为拼接了,所以可以。但是定义的时候需要使用[]方式,否则name变量会作为属性名,而不是name变量代表的值作为属性名。

2、callback是传入的函数

http://img1.sycdn.imooc.com//climg/5f49bfe90955109708070193.jpg

try中判断的是,如果传入了函数,就调用这个函数,并传入返回的数据,输出出来。

3、页面中需要不同内容数据时,一般会发送多个请求,所以创建的函数会变多,就是这里

http://img1.sycdn.imooc.com//climg/5f49c0d009a1ef9d05830277.jpg

拿到数据后这个函数就没有用了,可以删除,避免后面某一个创建函数名称重复。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师