ES6标准新增了一种函数–箭头函数(Arrow Function),比较容易识记,因为它的定义用的就是一个箭头表示的。
主要从以下方面理解箭头函数:
- 1.箭头函数的用法。
- 2.箭头函数的语法。
- 3.箭头函数的this问题。
箭头函数相当于匿名函数,并且简化了函数的定义。箭头函数有两种格式。
1.只包含一个表达式,{…}和return都省略掉了。如 x=>x*x
2.包含多条语句,此时不可省略{…}和return。
如:
x=>{
if(x>0){
return x*x;
}else{
return -x*y;
}
}
1.箭头函数的用法
用法如下:
相当于es5的如下写法:
由此可见,使用箭头函数可以简化js代码。
2.箭头函数语法
箭头函数根据参数个数的不同,语法也不同。
- 1.无参数
没有参数的箭头函数,需要在箭头前加上小括号。如下: - 2.参数个数大于1
参数个数大于1时,就需要用括号()括起来,如下是两位参数的情况。 - 3.可变参数
函数体有多条语句时,需要使用大括号{}括起来。
arr数组是可变的。 - 4.返回对象。
箭头函数也可以返回对象,为了防止大括号{}被解释称代码块,和函数体的大括号有语法冲突,最好使用小括号包起来。如下:
3.箭头函数的this理解
箭头函数与匿名函数最明显的区别的就是this的指向不同。
1.箭头函数内部的this指向是固定的,是词法作用域,由上下文确定。
2.匿名函数的this没有绑定作用域,可能指向window全局。
如下代码帮助理解。
ES5写法:
单步调试如下:
ES6会固定this的指向,写法如下:
调试如下:
3.由于this在箭头函数中已经按照词法作用域绑定了,所以使用call()或apply()调用箭头函数时,无法对this进行绑定。传入的第一个参数就会被忽略掉。
如下:
子在川上曰:逝者如斯夫,不舍昼夜!每天快乐一点点,进步一点点@girl!