• ES6学习---箭头函数


    1语法和格式

    语法非常简洁,箭头就是这个样:=>

    原来的函数写法:

    function show(){
    
      return 1;
    
    }

    变成箭头函数:

    let show=()=>1; 

    箭头左边的括号就是这个括号:

      

    1就是return1

     

    说白了,就是箭头左边是参数,右边是返回值。函数名用变量表示。

    例:

    let show=(a,b)=>a+b;
    
    console.log(show(1,2));

    如果有多条语句:

    ()=>{

      语句;

      return

    }

    例:

    let show=(a=1,b=2)=>{
        console.log(a,b);
        return a+b;
    }
    console.log(show());

    2需要注意的几点

    2.1 this问题

    let json={
        id:1,
        show:function(){
            alert(this.id);
        }
    }
    json.show();

    如果加个延迟:

    let json={
        id:1,
        show:function(){
            setTimeout(function(){
                alert(this.id);
            },2000);        
        }
    }
    json.show();

    这是因为setTimeout是由window执行的,所以里面的this就是windowwindow没有定义id(在全局中用var定义的才属于window,用letconst不属于),所以是undefined

    用箭头函数就可以解决这个问题:

    let json={
        id:1,
        show:function(){
            setTimeout(()=>{
                alert(this.id);
            },2000);
        }
    }
    json.show();

    结论:

    箭头函数中的this表示定义函数所在的对象,不再是运行时所在的对象。

    2.2箭头函数中没有arguments

    function fun1(){
        console.log(arguments);
    }
    fun1(1,2,3);

    let show=()=>{
        console.log(arguments);
    }
    show(1,2,3);

    可以用剩余参数...来解决:

    let show=(...args)=>{
        console.log(args);
    }
    show(1,2,3);

    2.3箭头函数不能当作构造函数

    function show(){
        this.name='abc';
    }
    let fun=new show();
    console.log(fun.name);

    let show=()=>{
        this.name='abc';
    }
    let fun=new show();
    console.log(fun.name);

  • 相关阅读:
    矩形法求积分sin cos exp
    约瑟夫环问题
    KMP算法详解
    找出float型数组的最大值和最小值,分别和第一个和最后一个元素互换
    二重指针应用
    C++学习笔记(一)
    Line学习笔记
    node2vec学习笔记
    deepwalk学习笔记
    如何保证消息不被重复消费?(如何保证消息消费时的幂等性)
  • 原文地址:https://www.cnblogs.com/hzhjxx/p/12046043.html
Copyright © 2020-2023  润新知