美文网首页
箭头函数的使用和this指向

箭头函数的使用和this指向

作者: 63537b720fdb | 来源:发表于2020-08-07 20:25 被阅读0次

一、箭头函数语法

(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.普通函数实现:
            let newArr = arr.map(function(n) {
                return n * 2;
            })
2.箭头函数实现

1.(param1) => {}

            let newArr = arr.map(n => {
                return n * 2;
            })

2.param1 => {} 只有一个参数时,可以省略圆括号

            let newArr = arr.map(n => {
                return n * 2;
            })

3.param1 => …… 当方法体内只有一个return语句时,可以省略方法体的花括号和return关键字

            let newArr = arr.map(n => n * 2)

三、箭头函数没有单独的this

箭头函数没有自己的this,那他的this去哪里找?
箭头函数会继承自作用域链中上一层的this,也就是箭头函数会顺着他的作用域链,一层一层往上找,知道找到有this为止。
setTimeout().call(window),所以setTimeout中的this被call改变成window

            setTimeout(function() {
                console.log(this);
            })
            
            /*上一层是window,则this指向window*/
            setTimeout(() => {
                console.log(this);
            })
image.png
  const obj = {
    aaa() {
      setTimeout(function () {
        setTimeout(function () {
          console.log(this); // window
        })

        setTimeout(() => {
          console.log(this); // window
        })
      })

      setTimeout(() => {
        setTimeout(function () {
          console.log(this); // window
        })

        setTimeout(() => {
          console.log(this); // obj
        })
      })
    }
  }

第一个setTimeout被call改变this指向,this指向window
第二个setTimeout的箭头函数没有单独的this,向上寻找,找到上一层setTimeout的this,指向window
第三个同第一个一样指向window
第四个同第二个一样,只是第四个的上一层是箭头函数,箭头函数没有this,继续向上一层找,找到aaa()的this,aaa()由obj调用,this指向obj

image.png

相关文章

  • Es6知识点总结

    methods 不能使用箭头函数 为啥?在箭头函数中使用this的话指向的是组件本身 如果不使用箭头函数 this...

  • 箭头函数

    箭头函数 箭头函数能让this的指向固定化 分析:1)第一个setInterval()中使用了箭头函数,箭头函数使...

  • 关于ES6箭头this的指向问题

    ES6 允许使用 “ 箭头 ” (=>)定义函数。 箭头函数 填 坑。 this的指向是 向上查找 非箭头函数的...

  • 关于箭头函数 this的指向问题

    ES6 允许使用 “ 箭头 ” (=>)定义函数。 箭头函数 填 坑。 this的指向是 向上查找 非箭头...

  • 关于箭头函数 this的指向问题

    ES6 允许使用 “ 箭头 ” (=>)定义函数。 箭头函数 填 坑。 this的指向是 向上查找 非箭头函数的函...

  • 箭头函数的使用和this指向

    一、箭头函数语法 (param1, param2, …, paramN) => { statements }(pa...

  • js笔记-3

    箭头函数 函数体内this的指向是定义时所在的对象,而不是使用时所在的对象 箭头函数没有arguments 箭头函...

  • 箭头函数()=>{}与function的区别

    1.箭头函数与function定义函数的写法: 2.this的指向:使用function定义的函数,this的指向...

  • React处理事件响应机制

    一. 箭头函数 1.1 使用箭头函数的优点 1、箭头函数一个重要的好处就是对于this对象指向问题,在普通函数中t...

  • es6--箭头函数

    概念:使用=>来定义,function(){}等于()=>{} es6的箭头函数是没有this指向,箭头函数内部t...

网友评论

      本文标题:箭头函数的使用和this指向

      本文链接:https://www.haomeiwen.com/subject/njferktx.html