美文网首页
箭头函数和普通函数的区别?

箭头函数和普通函数的区别?

作者: 看庭前花开花落_望天上云卷云舒 | 来源:发表于2019-12-26 14:34 被阅读0次
1、 箭头函数比普通函数要简洁
//普通函数写法
function fn(x){
    return function(y){
        return x+y
    }
}
//箭头函数写法
let fn=x=>y=>x+y
2、箭头函数的this永远指向其上下文的this,call(), bind(), apply()改变不了其this指向
let obj={
    name:'OBJ'
}
//普通函数
function fn1(){
    console.log(this)
}
fn1.call(obj);//obj

//箭头函数
let obj2=()=>{
    console.log(this)
}
fn2.call(obj);//window
let obj={
    name:'OBJ',
    fn:function(){
        //普通函数是有自己的this的 obj
        let f=()=>{
            //箭头函数是没有自己的this的,指向上下文中的this
            console.log(this);
        };
        f();
    }
};
obj.fn();//{name: "OBJ", fn: ƒ} 指向obj
//真实项目中的一个应用
let obj={
    name:'OBJ',
    fn:function(){
            //=>this:obj
            //期望需求是:1s后OBJ中的NAME改为'珠峰'
setTimeout(()=>{
      console.log(this);//=>OBJ
      this.name='珠峰';
},1000)    
    }
};
obj.fn();
3、箭头函数中没有ARGUMENTS类数组,只能基于 ...ARG(剩余运算符)来获取传递的参数集合(是一个数组)
let fn=(...arg)=>{
   console.log(arguments);//报错  arguments is not defined
   console.log(arg);// [10,20,30]  数组
}
fn(10,20,30)
4、箭头函数不能被new执行(因为:箭头函数没有this 也没有prototype)
function Fn(){
        this.x=100;
}
Fn.prototype.getX=function(){}
let f=new Fn;
//箭头函数
 let Fn=()=>{
    this.x=200;
}
let f=new Fn; //  报错  Fn is not a constructor
5、箭头函数的创建都是函数表达式方式(变量=函数),这种模式下,不存在变量提升,因为我们是用const 或者let 创建的,函数只能在创建完成后被执行(也就是创建的代码之后执行)
const fn=([形参])=>{
     //函数体 return
}
fn([实参])
6、箭头函数的简写
//形参只有一个,小括号可以不加
const  fn=n=>{};
//函数体中只有一句话,并且还是return xxx的,可以省略大括号和return 等
const fn=n=>n*10

/*
function fn(n){
    return function(m){
          return m+(++n)
    }
}
*/
//将上边的那个方法改成箭头函数
const fn=n=>m=>m+(++n);

7、箭头函数支持给形参设置默认值

let obj={};
let fn=(context=window,...args)=>{
    console.log(context,args)
}
fn(obj,10,20,30); //{} [10,20,30] 
fn();//window  []

注:笔记源于珠峰培训!

相关文章

  • 箭头函数和普通函数的主要区别是什么?

    箭头函数和普通函数的主要区别: this的指向问题,箭头函数是不存在this的(也是箭头函数和普通函数最主要的区别...

  • 函数的扩展

    函数的扩展 箭头函数和普通函数区别箭头函数没有this对象,箭头函数的里的this始终指向定义时所在对象,普通函数...

  • 2019-01-11

    ES6 箭头函数 箭头函数表示法:()=>console.log('Hello') 箭头函数和普通函数的区别 和普...

  • js理解普通函数和箭头函数

    普通函数: 箭头函数: 区别: 构造函数和原型 箭头函数不能作为构造函数 不能new。会报错 箭头函数没有原型属性...

  • 箭头函数和立即执行函数

    箭头函数 箭头函数和普通函数有什么区别?如果把箭头函数转换为不用箭头函数的形式,如何转换主要是this的差别,箭头...

  • 箭头函数和普通函数有什么区别?

    题目:箭头函数和普通函数有什么区别?箭头函数为什么不能用作构造函数? 参考答案 区别: 箭头函数在一些情况下书写更...

  • 改变this指向的方法

    箭头函数和普通函数的区别如下。 普通函数:根据调用我的人(谁调用我,我的this就指向谁) 箭头函数:根据所在的环...

  • 前端面试必会面试题

    1、箭头函数和普通函数的区别 1.箭头函数是匿名函数,不能作为构造函数,不能使用new 2.箭头函数不绑定argu...

  • 箭头函数

    引入箭头函数有两个方面的作用:更简短的函数并且不绑定this 普通函数和箭头函数的区别: 箭头函数的this指向规...

  • 箭头函数与普通函数的区别

    箭头函数与普通函数的区别,实质是我们是否理解了箭头函数,在我刚开始接触ES6时,印象中的箭头函数与普通函数的区别就...

网友评论

      本文标题:箭头函数和普通函数的区别?

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