zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    【Postgresql】set up
    【LSTM】Understanding-LSTMs
    【CTR】各公司方法
    【DL】stanford--cs20si--tensorflow
    Redis数据库入门教程
    用.htaccess文件实现URL重写
    php中urldecode()和urlencode()
    php中序列化与反序列化
    网站整合Ucenter详细流程
    ucenter 整合外部网站,实现登录等操作
  • 原文地址:https://www.cnblogs.com/hzhjxx/p/12046043.html
Copyright © 2011-2022 走看看