首页 > 其他 > 详细

箭头函数的注意事项

时间:2019-11-20 16:09:51      阅读:94      评论:0      收藏:0      [点我收藏+]

1.箭头函数中的this取决于函数的定义,而非调用:

 function a(){
        setTimeout(()=>console.log(this.age),100)
    }
    a.call({age:18})

    // function a(){
    //     setTimeout(function(){
    //         console.log(this.age)
    //     },100)
    // }
    // a.call({age:123})
两次调用都使用了call改变函数a的this指向,注释代码打印结果是window,而在箭头函数内的打印结果是调用所传入的对象。为啥呢?setTimeout调用了内部函数,普通函数的this指向是取决于函数的调用对象,意思也就是谁调用,那么this 就是谁,setTimeout实际上是window.setTimeout,所以注释代码打印结果是window;箭头函数的this并不取决于函数的调用而是取决于函数的定义,上述代码内的箭头函数是在a的函数体内定义的,那么箭头函数的this=a的this,调用a时改变了a的this指向让其=传入对象,所以在箭头函数内的打印结果是调用所传入的对象;(感觉好像有点绕  QAQ)
 
 
2.箭头函数不可以new,这个好理解,因为他不是构造函数,所以不能new;
 
3.箭头函数不可以使用arguments获取参数列表,可以使用rest代替:
    let name=(...rest) => {
          console.log(rest)
          //console.log(arguments)
     }
     function a(){
         console.log(arguments[0])
     }
     a(1,2,3,4,5);
     name(1,2,3,4,5,6);

在箭头函数内使用arguments会报未定义,这里rest是形参,可以自定义的,这样也是可以的

let name=(...a) => {
            console.log(a)
            //console.log(arguments)
        }

 

 

好了,以上就是个人在学习箭头函数时总结的,大神轻喷   *(?*ˊ?ˋ)?*

 
 

箭头函数的注意事项

原文:https://www.cnblogs.com/AprilL/p/11898347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!