ECMAScript6 (2) 函数

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;
}