当我们在开发一些工程应用中的通用组件时,都需要向外暴露一些接口以供使用。而这些接口的友好性是决定这个组件质量的一大指标,其中参数缺省值(默认值)的完善程度同时也影响着接口的友好性。
相对于ES2015 之前需要自行实现的默认参数值,ES2015 中使用语法直接实现默认参数值语法显得更加简洁而直观。
在JavaScript通用组件开发中,某一个接口很有可能需要同时提供两种获取返回值的方式——回调函数与Promise。而当使用了Promise时,应当允许不传入作为最后一个形参的回调函数。在某种意义上可以说是让这个回调函数的缺省值为一个noop函数,即空函数,使内部程序在将其作为回调函数执行的时候不会有任何行为发生。
如果使用ES2015 中的默认参数值来实现,语法可以变得非常优雅。首先定义noop函数,以作为回调函数的默认值。
然后再简单地实现一个同时提供回调函数和Promise的返回方式的接口。
显然,在现代JavaScript的应用开发中,Promise的使用频率会更高,体验也更好。Promise在经过多年的讨论、演变和实践后,也成为了ES2015 标准中的一个新特性,在后文中将会详细地介绍和讨论Promise的使用和应用场景。
函数的默认参数特性还可以用在某一个对象的方法中,而且所指定的默认参数还可以被定为该对象的某一个属性,这一特性可以用在很多逻辑开发场景中。