1. 函数扩展 参考:http://es6.ruanyifeng.com/#docs/function
(1)函数参数默认值。例如:function log(x, y = “world”){}, y就是有默认值。
- 参数不要重名。重名会有其他隐患存在,避免使用。
- 参数默认值不是传值的,而是每次都重新计算默认值表达式的值。也就是说,参数默认值是惰性求值的,最好不要使用表达式。
- 函数传对象参数。例如:function fetch(url, {body = ‘’, method = “GET”, headers = {}} = {}),定义对象如果赋予 {},则该参数可以省略,否则必填。
- 含有默认值的参数最好放在函数尾部,这样该参数可以省略,否则必填(可填undefined使用默认值)。
- 函数length,length属性等于参数个数减去默认值参数个数。
(2)rest参数
rest参数(形式为 ...变量名),用于获取函数多余参数,这样可以避免使用arguments对象,例如:
function digitalOperation(accord, sum = 0,...nums){
for(let i of nums){
if(accord === '+'){
sum = sum + i;
}
if(accord === '-'){
sum = sum - i;
}
if(accord === '*'){
sum = sum *i;
}
if(accord === '/'){
sum = sum /i;
}
}
return sum;
}
(3)箭头函数(=>)
例如:let sum = (num1, num2) => num1 + num2;
let sum = (num1, num2) => {return num1 + num2};
两者效果一样,箭头函数直接返回对象多余一行代码则必须使用{
包裹起来。
注意点:1.函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
2. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
3. 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
4. 不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
(4)双冒号运算符” :: ”。该运算符会自动将左边的对象、函数,绑定到右边的函数对象上。