箭头函数

箭头函数:不具备this和arguments,自己家没有this就会往上级找this,从而解决this的指向问题。

如何更改this指向

  • 1)call、apply、bind
  • 2)var that=this;
  • 3)箭头函数

如何确定this是谁

  • 看谁调用的,点前面是谁,this就是谁

箭头函数怎么写

1
2
3
4
5
6
7
8
//将下列函数改为箭头函数
function a(b){
return b+1;
}
//第一步:
let a=(b)=>{return b+1;}
//第二步(简化):
let a=b=>b+1;

总结:

  • 箭头函数中没有function关键字,去掉function关键字
  • 当形参只有一个的时候,可以省略小括号
  • 小括号和大括号之间有一个箭头:有大括号 必须要写return;如果没有大括号,表示箭头后面的结果就是return的结果
  • 将下列函数改为箭头函数:

    1
    2
    3
    4
    5
    6
    function a(b){
    return function(c){
    return b+c
    }
    }
    a(1)(2)// 3 -> 先执行a 再执行里面的匿名函数
  • 箭头函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//第一步
let a=b=>{
return function(c){
return b+c
}
}
//第二步:删除function和一个形参的小括号
let a=b=>{
return c=>{
return b+c
}
}
//第三步:删return和大括号
let a=b=>c=>b+c //高阶函数(俩个箭头及两个以上箭头的)

闭包

  • 函数执行的一瞬间
  • 导致内存泄漏->因为会产出不销毁的作用域
  • 当执行后返回的结果必须是引用数据类型,被外界变量接收,此时这个函数不会销毁
  • 作用:私有化
  • 闭包能干什么:模块化
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //以下函数不是闭包:
    function a(b){
    return function(c){
    return b+c
    }
    }
    a(1)
    a(1)(2)
    //不是闭包的原因:函数执行的一瞬间确实有形成闭包,但是函数执行完成后,作用域就被销毁了,所以不是闭包
    //以下函数是闭包:
    let a=function (b){
    return function(c){
    return b+c
    }
    }();
    //是闭包的原因:函数执行的一瞬间确实有形成闭包,当执行后返回的结果是引用数据类型,被外界变量a接收,此时这个函数不会销毁,会产出不销毁的作用域,容易导致内存泄漏,所以是闭包

在vue中很多时候不能用箭头函数

您的支持将鼓励我继续创作!