箭头函数和普通函数的几大区别

1.箭头函数是匿名函数,不能作为构造函数,不能使用new

    function Fn() {
    console.log(1);      //1
    }
    let fn1 = new Fn();    

普通函数可以使用new实例化

 let Fn2 = () => {
 console.log(1);
 }
 let fn3 = new Fn2();
屏幕快照 2019-10-30 下午2.59.13.png

箭头函数使用new实例化会报错。


2.普通函数有arguments,箭头函数没有arguments

function fn() {
console.log(arguments)    //[1,2,3,4,5]
} 
fn(1,2,3,4,5)

箭头函数使用arguments会报错,可以使用...arg来解决

let fn = () => {
 console.log(arguments)
}
fn(1,2,3,4,5)
屏幕快照 2019-10-30 下午2.54.10.png
 let fn = (...arg) => {
 console.log(arg)    //[1, 2, 3, 4, 5]
 }
 fn(1,2,3,4,5)

3.箭头函数没有this,会捕获上下文的this值作为自己的this值

var obj = {
name:'haha',
 fn(){
 console.log(this);    //this指向obj
  }
}
obj.fn();


var obj = {
name:'haha',
fn:() => {
console.log(this)    //this指向window
 }
}
obj.fn();

4.箭头函数没有原型

 var a = ()=>{
 return 1;
 }

function b(){
 return 2;
}

console.log(a.prototype);  // undefined
console.log(b.prototype);   // {constructor: ƒ}

你可能感兴趣的:(箭头函数和普通函数的几大区别)