ES6 拾遗(2)

1. 函数参数的默认值

在ES6 之前, 不能直接为函数的参数指定默认值, 只能采用变通的办法

上面代码的缺陷在于如果name被赋值为false或者””则默认值会生效

ES6中可以直接为参数赋默认值,并且默认值只有在参数值为undefined时才会生效, null和”” 不会造成影响

2. 定义了默认值的参数应该在函数参数列表的尾部, 这样比较容易看出到底可以省略哪些参数
3. 函数的length属性, 在指定了默认值之后, 函数的length属性将返回没有指定默认值的参数个数, 也就是说,指定了默认值之后,length属性会失真

4. 利用参数默认值可以指定一个参数不得省略, 如果省略就抛出一个错误


5. 可以将参数默认值设置成undefined来表明这个参数是可以省略的

6. rest参数

ES6 引入了rest参数( 形式为 …变量名 ), 用于获取函数的多余参数, 这样就不需要使用arguments对象了.

rest参数搭配的变量是一个数组, 该变量将多余的参数放入其中

rest参数之后不能再有其他参数 (即只能是最后一个参数), 否则会报错

函数的length属性不包括rest参数

(function(a)).length //1

(function(…a)).length //0

(function(a, …b){}).length //1