提到箭头函数,不得不先回顾一下this
- 在全局执行上下文中(在任何函数体外部)this 都指代全局对象。//在浏览器中,全局对象是window,在node中是global
function fn(c,d){
console.log(this.a + this.b + c + d)
}
var obj = {
a:'a',
b:'b',
c:'c',
d:'d'
};
fn.call(obj,2,3) //fn内的this指向了obj 'a' + 'b' + 2 + 3
fn.apply(obj,[2,3])//第一个参数是this指向的对象,第二个参数是一个数组,数组里的元素用作函数调用中的参数
- 在定时器执行函数里
function Test(){
this.x = 1;
}
var a = new Test()
箭头函数的语法
- (参数1, 参数2, …, 参数N) => { 函数声明 }
var fn = (a,b)=>{return a+b}
fn(3,4)
- (参数1, 参数2, …, 参数N) => 表达式(单一)
var fn = (a,b)=> console.log(a+b) //var fn=function(a,b){console.log(a+b)}
fn(3,4)
var fn = (a,b)=> a+b //var fn = function(a,b) {return a+b}
- 当只有一个参数时,圆括号是可选的:
(单一参数) => {函数声明}
单一参数 => {函数声明}
// 没有参数的函数应该写成一对圆括号。 () => {函数声明}
箭头函数不会创建自己的this,它只会从自己作用域的上一层继承this
- 作为对象的方法被调用