请教一下 这段代码出错部分和正确部分 区别在哪里

柒伍伍捌壹陆 2018-08-13 05:36:16

//有 X方法 接收参数 onLoad:function
var config = {
ismax: true,
onLoad: function () {
console.info('do someting');
}
};
function A(param) {
if (param.ismax) {
param.onLoad = function () {
/*报错的代码*/
var onLoadFunction = function () {
param.onLoad();
console.info('do someting else');
}
param.onLoad = onLoadFunction;
/*报错的代码*/
/*正确的代码*/
var onLoadFunction = param.onLoad;
param.onLoad = function () {
onLoadFunction();
console.info('do someting else');
};
/*正确的代码*/
}
}
X(param);
}
A(config);
...全文
204 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinhx 2018-08-16
  • 打赏
  • 举报
回复
第一个是循环定义,丢失了原有的函数
第二个保存了原始的方法,并且加入到了新的函数中
var onLoadFunction = param.onLoad;//这里
param.onLoad = function () {
onLoadFunction(); // 这里
console.info('do someting else');
};
漠子凉 2018-08-15
  • 打赏
  • 举报
回复
第一种是可以写成这样

param.onLoad = function () {
param.onLoad();
console.info('do someting else');
}

第一次调用之后,onLoad被覆写,覆写之后的函数第一行就是调用自己(),你会发现它出现了调用自己的死循环

第二种,第二种不一样,它覆写之后,在覆写函数里面没有调用动作,每次的覆写调用的onLoadFunction的函数体的时候,
函数体只是对函数进行覆写,而并没有出现调用。所有不存在第一种的死循环
丰云 2018-08-14
  • 打赏
  • 举报
回复
呵呵,请问茴字有几种写法??

87,940

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧