javascript回调函数详解

在高级语言层出不穷的年代,各个语言都号称有着一切皆为对象的自豪说法,而 js 作为一门脚本语言却相对于java等传统面向对象语言有很大的不同之处,除了 js 诡异的继承体系之外,最令人着迷的一个特性就是回调函数,当然也有很多人对他诟病,笔者认为 回调函数 和 异步 是js语言特性的两大最为突出的店,当然正如所有优点需要满足自我的需求,这个世界没有银弹,比如大量的使用回调函数将会使你的代码冗余,错乱影响代码人的视觉与思维体验.

本文是自己对学习回调函数的的体会,难免不完善甚至错误,原谅我的无知,我愿虚心学习,完善自己.

javascript最独特的就是 函数 作为一等公民,我更愿意将 js 称为一切皆为 变量 的一门高级语言,函数也是一种变量可以成为其他函数的参数,我们喜欢在js中称之为回调函数,另外js中的匿名函数可以作为函数参数使得回调函数的写法如鱼得水.

ps. 回调函数与 c 语言中的函数指针类似---指针指针指针!!!重要的事情说三遍

先来看一下回调函数的定义

In computer programming,a callback is a piece of executable code that is passed as an argument to other code,which is expected to call back (execute) the argument at some convenient time

回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。

回调函数

function squa(num){
return num*num;
}

let num = addSqua(1,2,squa);
console.log(num);
//=>9

匿名回调函数

将匿名函数直接作为函数参数传递给函数,这也是我们编程一般采用的

模仿数组中的every方法

在Array.prototype中添加类似与every一样的方法

let op = [3,6,'every',9,'each'];
op.myEvery(function (value) {
console.log(value);
})
// 3
// 6
// 'every'
// 9
// 'each'

回调函数特点

  1. 不会立刻执行,正如定义中给出的一样回调函数作为代码片段可以根据需要在其特定条件下执行,回调函数作为参数传递给一个函数的时候,传递的只是函数的定义并不会立即执行。
  2. this,ES6推出了箭头函数,箭头函数的推出需要在写回调函数的时候格外注意,this 是指向所在函数的上下文对象,如果在在ES6采用箭头函数则需要注意 this使用,箭头函数中this并没有上下文关系直说,有兴趣的可以查看ES6 阮一峰,再次奉上传送门

回调函数的优点和使用场景是个闭包

回调函数是闭包的简单使用,也就是说它能访问到其外层定义的变量。

回调函数之美

  • DRY,避免重复代码。
  • 可以将通用的逻辑抽象。
  • 业务逻辑分离 (it's so beautiful ^-^ ^-^)
  • 提高代码可维护性和可读性。
  • 加强代码可读性。
  • 分离专职的函数。

js回调函数的伟大之处是其他传统语言所没有的,它可以实现业务逻辑分离,相当于暴露给外界一个接口,这一点像极了前后端分离架构中的 API 接口设计理念

这个世界没有 '银弹',没有能够解决所有事情的一种方案,由于js为异步而生,回调函数用的最多的地方,也是最适合的地方就是异步编程,然而大量的使用会使得程序员的代码冗余,有很大的不可读行,体验极差,索性让人高兴的事,人们从来没有停止过对自己舒适度的追求。

以上就是本次小编整理的关于javascript回调函数的相关知识内容,感谢你对编程之家的支持。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)