什么是箭头函数
以普通的函数表达式为例。
let sum = function (a,b){console.log(a+b)}
如果转换成箭头函数的语法应该是:
let sum = (a,b)=>{console.log(a+b)}
其实很简单,就是把参数列表转为括号形式,函数体转为大括号形式。
箭头函数的形参
默认形式是
(a,b,c........)
但是当形参只有一个的时候括号可以省略
a=>{consloe.log(a)}
箭头函数的函数体
当函数的函数体的只有一句时,可以省略大括号,这时会把函数体的执行结果作为返回值
。比如:a=>{return a;}
等价于a=>a
箭头函数的this指向
箭头函数的this指向,我觉得记住一句话,它的this指向和最近一层作用域中的this指向是一致的。 举个例子:
setTimeout(function(){console.log(this)},100);
setTimeout(()=>console.log(this),100);
这两个this分别输出什么呢?
第一个this,之前文章中涉及到了。setTimeout/setInterval中的函数默认this指向是window。
第二个this,它和最近作用域中的this指向一致,最近作用域中在这里应该是全局作用域。全局作用域中的this应该是window。
let obj = {
a:function(){
setTimeout(()=>console.log(this),1000);
}
}
这里的this应该指向对象a。