您的位置:首页 > 其它

零散知识点:简单理解回调函数

2016-08-12 12:25 197 查看
为什么用回调函数?

1、异步

2、不知道参数

【讲师】沈逸(6******9) 23:14:12
回调 就是把 函数B 当做 字符串、数字这样的参数传给函数A
函数A 理论上会在它执行完成后,手动 执行函数B。 但是如果我的函数A 乱调用 也是可以的
【讲师】沈逸(6******9) 23:16:26
function fuck(callback)
{
callbak();//手动调用了
}
function shit()
{
shit本身也是一个函数
}

执行的时候 这么调用 fuck(shit)  //注意shit绝对不能加小括号,否则传的就不是函数,而是“不知道的一个什么玩意儿”
Fl**r(25******69) 23:21:25
叔,回调函数可不可以调用在执行它的函数之前?
【讲师】沈逸(6******9) 23:21:41
随你啊
【讲师】沈逸(6******9) 23:22:03
fuck(callbak)
{
xxoo 执行完后调用 callbak()
}
【讲师】沈逸(6******9) 23:22:34
但是你可以 故意反人类
fuck(callbak)
{
callbak() //老子就要先调用 这个回调
xxoo 再执行 xxoo
}
【讲师】沈逸(6******9) 23:23:44
一般来说 我们懒得抽筋, 连shit都不高兴写 。于是就变成了
fuck(function(){
这里面就是shit的内容
})
【讲师】沈逸(6******9) 23:24:28
这也叫做 匿名函数 传参
【讲师】沈逸(6******9) 23:24:41
其实就是 连名字老子  都不高兴写 的传参方式
【讲师】沈逸(6******9) 23:25:18
世界上根本不存在  “回调”。 都是人类 发明出来的名词。 如果 我在fuck里面不手工调用传过来的函数, 回死了也没用
【讲师】沈逸(6******9) 23:27:10
还有一种是有参数的回调
fuck(callbak)
{
var xxoo='fuck';
callback(xxoo);
}
function shit(bb)
{

}

看这里调用 fuck(shit)
【讲师】沈逸(6******9) 23:28:03
演化成匿名函数 这就是为何 像jquery的ajax方法有n个参数
$.post('url',function(fuck){
这里是回调
});
【讲师】沈逸(6******9) 23:28:20
这就都是 主函数 在手动调用时,强迫传给你的
【讲师】沈逸(6******9) 23:29:20
搞清楚了这个 ,一下子把 所谓的“回调”逼格 全部降下来了
【讲师】沈逸(6******9) 23:30:07
这个再讲个技巧
【讲师】沈逸(6******9) 23:31:52
一般我们写函数应该这么写
function bb(fuck)
{
if(fuck==对象)
执行某个事情
if(fuck==数组)
执行另外的事情
}

这样  我们队友调用我们的bb函数时 既可以
1、bb({name:"shenyi")}

也可以
bb(['shenyi']);
【讲师】沈逸(6******9) 23:31:57
逼格一下子 提高了N倍
Fl**r(25******69) 23:32:25
双击查看原图
【讲师】沈逸(6******9) 23:33:06
这就是为何老外的 库,参数 又可以是字符串 又可以是对象 又可以是数组。 看起来好有逼格

其实 就是一个 “障眼法”,没啥稀奇的
【讲师】沈逸(6******9) 23:34:57
这种做法的最大好处是 兼容性

以前的函数 譬如 参数只能是数组,现在升级了,为了兼容老的程序,加个 对象参数模式

换汤不换药,继续 装逼
【讲师】沈逸(6******9) 23:42:24
function fuck()
{

}

fuck就是函数(注意:没有写小括号)
fuck() (这里我加了小括号,这就不是函数了,而是执行该函数,不知道是”啥玩意儿,如果没有return ,啥玩意儿都不是)
【讲师】沈逸(6******9) 23:43:45
很多同学 搞错了概念。 以为fuck()才是函数
【讲师】沈逸(6******9) 23:46:52
callback(xxoo);
【讲师】沈逸(6******9) 23:47:23
这里就是 母体(fuck函数就是母亲,手工调用了callbak,而这个callbak 就是shit)
【讲师】沈逸(6******9) 23:47:56
callback(xxoo);  就等于 执行了 shit(xxoo)
【讲师】沈逸(6******9) 23:48:49
1、fuck(shit)

2、fuck(function(xxoo){})
【讲师】沈逸(6******9) 23:48:57
如果实在理解不了 就强记
【讲师】沈逸(6******9) 23:54:02
你在调用 fuck 的时候(譬如 fuck 就是 ajax ) 你事先知道 响应结果?
【讲师】沈逸(6******9) 23:54:16
明显只有 母体 执行 某个事情后 才知道结果,才能传给 shit
【讲师】沈逸(6******9) 23:55:50
永远要记住  fuck(shit); 你调用的是啥函数?
注意:不是 shit,而是调用了 fuck
【讲师】沈逸(6******9) 23:56:38
你在调用fuck函数时,根本不知道 得到什么结果,所以只能把 shit函数 传给fuck.
让fuck得到 结果后,反过来调用shit(这就得到了参数)
【讲师】沈逸(6******9) 23:58:32
你只能等待 fuck去 调用shit时 传参
【讲师】沈逸(6******9) 0:01:54
干嘛要回调?
1、异步
2、不知道参数
【讲师】沈逸(6******9) 0:02:07
否则 传来传去干啥,太空?
学**尽(17***4***5) 0:03:49
演化成匿名函数 这就是为何 像jquery的ajax方法有n个参数
$.post('url',function(fuck){
这里是回调
});
学**尽(17***4***5) 0:04:16
function(fuck是回调函数把)
【讲师】沈逸(6******9) 0:04:17
$.post('url',function(fuck){
这里的fuck就是 母体通过各种 复杂的事情得到的
});
【讲师】沈逸(6******9) 0:04:32
function(fuck) 就是shit函数
学**尽(17***4***5) 0:04:57
那fuck是一个参数
【讲师】沈逸(6******9) 0:05:00
function shit(fuck)  把名字( shit)去掉后 就是 function(fuck)
【讲师】沈逸(6******9) 0:05:26
fuck就是一个参数 只不过你事先不知道 是啥
【讲师】沈逸(6******9) 0:05:40
你需要 等待 $.post 这个 函数得到结果后,传给 你的匿名函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: