ES6箭头函数标签(空格分隔):未分类返回值单行函数体默认返回换行计算结果,多行需要指定返回值letc=(a,b)=>a+b;console.log(c(1,12));ES5“使用严格”;varc=functionc(a,b){returna+b;};console.log(c(1,12));letc=(a,b)=>{a=a+b;a--}console.log(c(1,12));//undefinedletc=(a,b)=>{a=a+b;返回一个--};返回对象时(否则会报错)让c=(a,b)=>({a:a});或者让d=(a,b)=>{return{a:a}}this点到绑定外层函数this(简化了一个常用的用法,_this=this)在箭头函数出现之前,每个新定义的函数都有自己的this值(比如构造函数的this指向一个新的对象被创建;this严格模式下函数的值是未定义的;如果函数作为对象的方法被调用,则它的this指向调用它的对象)。//MDNES5functionPerson(age){var_this=this;这个。年龄=年龄;setTimeout(functiongrowUp(){console.log(this);_this.age++;},1000);}varp=newPerson(26);ES6functionPerson(age){this.age=age;setTimeout(()=>{console.log(this);this.age++;},1000);console.log(this.age);}varp=newPerson(26);使用call或apply来调用由于this已经在词法层面进行了绑定,所以在通过call()或apply()方法调用函数时,只传入参数,对this没有影响。arguments箭头函数并没有暴露其内部的参数(arguments):arguments.length、arguments[0]等,不会指向箭头函数的arguments,而是指向箭头函数的一个名为arguments的作用域的值of(如果有,否则,它是未定义的。-译者注)。在这种情况下,ES6剩余参数可以替换functionfoo(n){varf=(...args)=>args[0]+args.length;返回f(n);}富(1);//1
