箭头函数和普通函数的区别
箭头函数都是匿名函数
const sum = function sum(a, b) {
return a + b
}
//箭头函数
const sum = (a, b) => a + b
箭头函数没有自己的this
箭头函数不能作为构造函数,不具有prototype原型对象,也没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。
var id = '1';
var obj = {
id: '2',
a: function(){
console.log(this.id);
},
b: () => {
console.log(this.id);
}
};
obj.a(); // '2'
obj.b(); // '1'
箭头函数不能用arguments
箭头函数不绑定arguments,取而代之用rest参数…解决
// 普通函数
function test(a) {
console.log(arguments) // Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
}
test(1,2,3)
// 箭头函数
const sum = (...a) => {
console.log(a) // [3, 4]
}
sum(3, 4)