zl程序教程

您现在的位置是:首页 >  后端

当前栏目

箭头函数与普通函数(function)的区别是什么?构造函数(function)可以使用 new 生成实例,那么箭头函数可以吗?为什么?

实例 使用 函数 什么 区别 生成 为什么 可以
2023-06-13 09:13:57 时间

基本不同 1.写法不同,箭头函数使用箭头定义,普通函数中没有

  1. .箭头函数都是匿名函数,普通函数可以有匿名函数,也可以有具体名函数,但是箭头函数都是匿名函数。
  2. 在普通函数中,this总是指向调用它的对象,如果用作构造函数,this指向创建的对象实例。箭头函数中没有this,声明时捕获其所在上下文的this供自己使用。所以箭头函数结合call(),apply()方法调用一个函数时,只传入一个参数对this没有影响。
   var x='window x'
   function fn1(){
       console.log(this.x)
   }
   var fn2=()=>{
       console.log(this.x)
   }
   var obj={
       x:"obj x"
   }
   fn1.call(obj); // obj x
   fn1.apply(obj); // obj x
   fn2.call(obj);  // window x
   fn2.apply(obj);  // window x

4.箭头函数不可以做构造函数,不能使用new 关键字,因为new关键字是调用函数对象的constructor属性,箭头函数中没有该属性,所以不能new

    function fn1(){
        console.log('a')
    }
    var fn2=()=>{
        console.log('b')
    }
    console.dir(fn1)
    console.dir(fn2)
    new fn1()
    new fn2()

输出如下

image.png

5.箭头函数不绑定arguments,取而代之用rest参数…解决 6.箭头函数不可做Generator函数