- 在高级语言层出不穷的年代, 各个语言都号称有着一切皆为对象的自豪说法, 而 js 做为一门脚本语言却相对于java等传统面向对象语言有很大的不一样之处, 除了 js 诡异的继承体系以外, 最使人着迷的一个特性就是回调函数, 固然也有不少人对他诟病, 笔者认为 回调函数 和 异步 是js语言特性的两大最为突出的店, 固然正如全部优势须要知足自个人需求, 这个世界没有银弹, 好比大量的使用回调函数将会使你的代码冗余, 错乱影响代码人的视觉与思惟体验.
- 本文是本身对学习回调函数的的体会, 不免不完善甚至错误, 原谅个人无知, 我愿虚心学习, 完善本身.
javascript最独特的就是 函数 做为一等公民, 我更愿意将 js 称为一切皆为 变量 的一门高级语言, 函数也是一种变量能够成为其余函数的参数, 咱们喜欢在js中称之为回调函数, 另外js中的匿名函数能够做为函数参数使得回调函数的写法如鱼得水.javascript
ps. 回调函数与 c 语言中的函数指针相似---指针指针指针!!!重要的事情说三遍java
回调函数程序员
function addSqua(num1, num2, callback){ var sum = num1 + num2; return callback(sum); } function squa(num){ return num*num; } let num = addSqua(1, 2, squa); console.log(num); //=>9
匿名回调函数编程
将匿名函数直接做为函数参数传递给函数, 这也是咱们编程通常采用的
function addSqua(num1, num2, callback){ var sum = num1 + num2; return callback(sum); } let num = addSqua(1, 2, function squa(num){ return num*num; }); console.log(num); //=9
在Array.prototype中添加相似与every同样的方法segmentfault
Array.prototype.myEvery = function (callback) { if (typeof callback === 'function') { for (let i = 0; i < this.length; i++) { if (callback(this[i])) { return false; } } return true; } return true; } let op = [3, 6, 'every', 9,'each']; op.myEvery(function (value) { console.log(value); }) // 3 // 6 // 'every' // 9 // 'each'
回调函数的优势和使用场景
是个闭包后端
js回调函数的伟大之处是其余传统语言所没有的, 它能够实现业务逻辑分离, 至关于暴露给外界一个接口, 这一点像极了先后端分离架构中的 API 接口设计理念这个世界没有 '银弹' , 没有可以解决全部事情的一种方案, 因为js为异步而生, 回调函数用的最多的地方, 也是最适合的地方就是异步编程, 然而大量的使用会使得程序员的代码冗余, 有很大的不可读行, 体验极差, 索性让人高兴的事, 人们历来没有中止过对本身温馨度的追求, 笔者会在另外之前文章中具体简述 js 的异步解决方案 这里送上传送门 js 异步解决方案数组