我们常说,在ECMAScript的开发中函数是 第一类公民(First-class citizen) ,但函数形参的使用十分简陋。ECMAScript与Java等语言不一样,ECMAScript的函数没有重载的概念,即无法通过不同的参数列表来区分同一个函数名的不同作用。
在ECMAScript的函数定义中存在arguments的概念,这是ES2015 标准被定义之前在ECMAScript的函数中对当前调用所传入的形参列表进行访问的对象,聪明的开发者们利用这个对象实现了许多在ECMAScript标准中并没有定义的功能,如默认参数、剩余参数甚至重载等。
这些需求都是实际开发中会经常使用到的,尤其是在开发系统通用组件或开源框架时,这些特性的使用可以大大增强组件对外暴露的API的友好性。
经过了多年的讨论和迭代,TC-39 决定将这些特性直接引入ECMAScript(ES2015)标准中,这让ECMAScript在开发体验上有了相当程度的提高。与此同时,使用这些原生的语言特性所完成的代码,相比于之前需要开发者自行实现的代码,可阅读性更高。