ES6学习笔记之箭头函数
1、什么是箭头函数
箭头函数就是代替function()这个函数的简写
var f = v => v; //var f就是定义一个函数名,=v是函数f的参数,=>v就是返回v
// 等同于
var f = function (v) {
return v;
};
2、使用箭头函数后,this的指向有什么变化
在js机制里面,没有被定义的this默认指向window,箭头函数里面的this指向的是document对象,是定义时所在的对象而不是使用时所在的对象
this
指向的固定化,并不是因为箭头函数内部有绑定this
的机制,实际原因是箭头函数根本没有自己的this
,导致内部的this
就是外层代码块的this
。正是因为它没有this
,所以也就不能用作构造函数。
// ES6
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}
// ES5
function foo() {
var _this = this;
setTimeout(function () {
console.log('id:', _this.id);
}, 100);
}
3、箭头函数的优点
箭头函数可以与变量解构结合使用
const full = ({ first, last }) => first + ' ' + last;
// 等同于
function full(person) {
return person.first + ' ' + person.last;
}
箭头函数使得表达更加简洁
const isEven = n => n % 2 === 0;
const square = n => n * n;
简化回调函数
// 正常函数写法
[1,2,3].map(function (x) {
return x * x;
});
// 箭头函数写法
[1,2,3].map(x => x * x);
需要注意的点:
大括号被解释为代码块,如果返回的是对象,要在对象外面加上括号,否则报错。
arguments
、super
、new.target这三个在箭头函数中也不存在~~~~~
不可以使用new
命令,否则会抛出一个错误
不可以使用arguments
对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
不可以使用yield
命令