像普通人同样编写代码和像“忍者”同样编写代码的最大差异在因而否把 JavaScript 做为函数式(functional language)来理解。对这一点的认知水平决定了你编写的代码水平。数组
一、函数是第一类对象浏览器
对象能作的任何一件事,函数也都能作。函数也是对象,惟一的特殊之处在于它是可调用的(invokable),即函数会被调用以便执行某项动做。函数
第一类对象的特色之一是,它可以做为参数传入函数。对于函数而言,这项特性也代表:若是咱们将某个函数做为参数传入另外一个函数,传入函数会在应用程序执行的将来某个时间点才执行。你们所知道的更通常的概念是回调函数(callback function)。动画
二、回调函数spa
每当咱们创建了一个将在随后调用的函数时,不管是在事件处理阶段经过浏览器仍是经过其余代码,咱们都是在创建一个回调(callback)。这个术语源自于这样一个事实,即在执行过程当中,咱们创建的函数会被其余函数在稍后的某个合适时间点“再回来调用”。对象
有效运用 JavaScript 的关键在于回调函数,相信你已经在代码中使用了不少回调函数——不管是单击一次按钮、从服务端接收数据,仍是 UI 动画的一部分。blog
如今让咱们看一个回调函数的用法,它能极大地简化集合的排序排序
三、函数做为对象的乐趣——存储函数、自记忆函数事件