ECMAScript6--箭头函数

143 阅读1分钟

什么是箭头函数

以普通的函数表达式为例。

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。