Javascript 中, 无论函数定义中声明了多少形参, 都可以传入任意数量的参数,
也可以在定义函数时添加针对参数数量的处理逻辑, 当已定义的形参无对应的传入参数时为其指定一个默认值
在ECMAScript5 和早期版本中, 你可以通过以下方式创建函数并赋上默认值
function testArguments(a,b,c){
b = "default b ";
c = "default c ";
console.log(a + b + c);
}
testArguments("a ");
上面的代码会输出
a default b default c
在ECMAScript6中, 上面的代码等价于
function testArguments(a,b="default b ",c="default c"){
console.log(a + b + c);
}
testArguments("a ");
这里重点来看一下箭头函数
在ECMAScript6中, 箭头函数是一种使用 => 定义函数的新语法, 但是这种方式创建的函数与传统Javascript函数有些许不同
1. 没有this, super, arguments 和 new.target 绑定
箭头函数中的 this, super, arguments 和 new.target 这些值由外围最近一层非箭头函数决定
2. 不能通过new关键字调用
箭头函数没有 construct 方法, 所以不能通过new关键字调用, 程序会抛出错误
3. 没有原型
由于不可以通过new关键字调用箭头函数, 因为没有构建原型的需求, 所以箭头函数不存在prototype这个属性
4. 不可以改变this绑定
函数内部的this值不可以被改变, 在函数的生命周期内始终保持不变
5. 不支持arguments对象
6. 不支持重复命名参数
let sum = (x,y) => x+y;
等价于
let sum = function(x,y){
return x+y;
}