zoukankan      html  css  js  c++  java
  • 《深入理解ES6》之箭头函数

    箭头函数是一种使用箭头(=>)定义函数的新语法,它与传统js函数的不同之处有:

    1. 没有this、super、arguments、和new.target绑定
    2. 不能通过new关键字调用
    3. 没有原型
    4. 不可以改变this的绑定
    5. 不支持arguments对象
    6. 不支持重复的命名参数

    箭头函数的语法

      箭头函数由函数参数、箭头、函数体组成。

      当箭头函数只有一个参数时,可以直接写参数名,箭头紧随其后,箭头右侧的表达式被求值后便立即返回。

    let first=value=>value;
    
    //相当于:
    
    let first=function(value){
        return value;
    };

      当传入两个或两个以上的参数,要在参数的两侧添加一对小括号,并且用逗号进行分隔。

    let sum=(a,b)=>a+b;
    
    //相当于:
    
    let sum=function(a,b){
        return a+b;
    };

      如果没有参数,也要在声明的时候写一组没有内容的小括号。

    let getName=()=>'jiaxiaonuo';
    
    //相当于
    
    let getName=function(){
        return 'jiaxiaonuo';
    };

      如果想创建一个空函数,需要写一对没有内容的花括号。

    let doNothing=()=>{};
    
    //相当于:
    
    let doNothing=function(){};

      创建立即执行函数表达式

    let person=((name)=>{
        return{
            getName:function(){
                return name;
            }
        };
    })('jiaxiaonuo');
    console.log(person.getName());   //'jiaxiaonuo'
    
    //相当于
    let person=function(name){
        return{
            getName:function(){
                return name;
            }
        };
    }("jiaxiaonuo');
    console.log(person.getName());   //'jiaxiaonuo'

      箭头函数中没有this绑定,必须通过查找作用域链来决定其值。

      箭头函数缺少正常函数所拥有的prototype属性,它的设计初衷是“即用即弃”,所以不能用它来定义新的类型。

      箭头函数中的this值取决于该函数外部非箭头函数的this值,且不能通过call()、apply()或bind()方法来改变this的值。

      

    var result =values.sort((a,b)=>a-b);
    
    //相当于:
    
    var result=values.sort(function(a,b){
        return a-b;
    });
    var sum=(num1,num2)=>num1+num2;
    console.log(sum.call(null,1,3));//4
    console.log(sum.aplly(null,[1,3]);//4
    
    var bounSum=sum.bind(null,1,3);
    console.log(boundSum());//4
  • 相关阅读:
    函数调用栈的总结
    Calling convention-调用约定
    函数可以返回结构体的原因
    pthread_join/pthread_exit的用法解析
    线程退出的几种方式和资源回收【线程编程中避免内存泄漏】
    线程状态与tcb、线程的生命周期
    pthread_cleanup_push vs Autorelease VS 异常处理
    thread.h
    Thread Control Block
    线程与cpu
  • 原文地址:https://www.cnblogs.com/jiaxiaonuo/p/7269195.html
Copyright © 2011-2022 走看看