第三章 新手的第一堂函数课:定义与参数
像普通人一样编写代码和像“忍者”一样编写代码的最大差别在于是否把 JavaScript 作为函数式(functional language)来理解。对这一点的认知水平决定了你编写的代码水平。
1、函数是第一类对象
对象能做的任何一件事,函数也都能做。函数也是对象,唯一的特殊之处在于它是可调用的(invokable),即函数会被调用以便执行某项动作。
- 通过字面量创建
- 赋值给变量,数组项或其他对象的属性
- 作为函数的参数来传递
- 作为函数的返回值
- 具有动态创建和分配的属性
第一类对象的特点之一是,它能够作为参数传入函数。对于函数而言,这项特性也表明:如果我们将某个函数作为参数传入另一个函数,传入函数会在应用程序执行的未来某个时间点才执行。大家所知道的更一般的概念是回调函数(callback function)。
2、回调函数
每当我们建立了一个将在随后调用的函数时,无论是在事件处理阶段通过浏览器还是通过其他代码,我们都是在建立一个回调(callback)。这个术语源自于这样一个事实,即在执行过程中,我们建立的函数会被其他函数在稍后的某个合适时间点“再回来调用”。
有效运用 JavaScript 的关键在于回调函数,相信你已经在代码中使用了很多回调函数——不论是单击一次按钮、从服务端接收数据,还是 UI 动画的一部分。
现在让我们看一个回调函数的用法,它能极大地简化集合的排序
3、函数作为对象的乐趣——存储函数、自记忆函数