闭包遇到问题
闭包会一直从外往内执行
const log = console.log.bind(console) const f = function (c, callback) { log("c",c) return callback(r = "0") } const a = function (callback) { var c = "1" log("a") return f(c , callback) } const ff = function() { log("进入") a(()=> { return 567 log("3") }) } ff() //进入 a c 1
多层嵌套返回值
const cc = function() { return 123 } const aa = function() { return cc() } aa() //返回值123
const f = function ( callback) { return callback() } const a = function (callback) { return f(callback) } const ff = function() { return a(()=> { return 567 }) } ff() //567
返回值支持多层嵌套 return返回的值传递 并且支持函数作为值传递
箭头函数很例外
const ccc = function() { } const aaa = function(rrr) { return ccc((rrr) => { return rrr() }) } aaa(() => { return 1 }) //没有返回值
const ccc = function() { log("ccc") //// ccc收到函数但是没有用这个收到的参数 } const aaa = function(rrr) { log("aaa") ccc(() => { log("+ccc") rrr() //此处两句皆为参数传给函数ccc() }) } aaa(() => { log("1") return 1 }) //此乃失败案例
const ccc = function(rrr) { rrr() log("ccc") } const aaa = function(rrr) { log("aaa") ccc(() => { log("+ccc") rrr() }) } aaa(() => { log("1") return 1 })
箭头函数坑
var c = (a, b) => {a+b} undefined c(1,2) undefined var d = (a, b) => a+b undefined d(1, 2) 3
在不添加大括号的时候箭头函数会默认return语句,加了大括号就正常
最后终于解决问题
const ccc = function(rrr) { return rrr() } const aaa = function(rrr) { return ccc(rrr) } var s = aaa(() => { log("11") return 1 })
继续深耕!发现是回调函数的坑
回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调
本人是一个技术爱好者
1.但是每个技术爱好者都是从萌新开始的
2.我所有的博文都是我各方资料查阅(看的比较乱比较杂,因为有些是群里讨论等等来源,无法辨别出处,所以我的文章都是没有写明出处,都是我个人消化后整理,)
3.但是没有经过我实践的我一般会标注
4.希望大家共同交流共同进步,指出我的不足 谢谢

浙公网安备 33010602011771号