箭头函数的使用和this指向
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
//相当于:(param1, param2, …, paramN) =>{ return expression; }
// 当只有一个参数时,圆括号是可选的:
(singleParam) => { statements }
singleParam => { statements }
// 没有参数的函数应该写成一对圆括号。
() => { statements }
arr = [20,1,34,2],使用函数实现数组中的每项数据都乘2的操作,最后得到
arr = [40.2.68.4]
1.(param1) => {}
2.param1 => {} 只有一个参数时,可以省略圆括号
3.param1 => …… 当方法体内只有一个return语句时,可以省略方法体的花括号和return关键字
箭头函数没有自己的this,那他的this去哪里找?
箭头函数会继承自作用域链中上一层的this,也就是箭头函数会顺着他的作用域链,一层一层往上找,知道找到有this为止。
setTimeout().call(window),所以setTimeout中的this被call改变成window
第一个setTimeout被call改变this指向,this指向window
第二个setTimeout的箭头函数没有单独的this,向上寻找,找到上一层setTimeout的this,指向window
第三个同第一个一样指向window
第四个同第二个一样,只是第四个的上一层是箭头函数,箭头函数没有this,继续向上一层找,找到aaa()的this,aaa()由obj调用,this指向obj