箭头函数的注意事项

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)
        }

 

 

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

   
上一篇:c#-无效的参数对异常


下一篇:Java RegEx用于解析引用的参数