箭头函数

94 阅读1分钟

什么是箭头函数

  • 箭头函数表达式的语法比函数更加简洁。它没有自己的this,arguments,super或new.target。箭头函数表达式更适用需要匿名函数的地方,并且不能用作构造函数
 // ES5 Version
  var getCurrentDate = function (){
      return new Date();
  }

  //ES6 Version
  const getCurrentDat = () => new Date();
  • 在本例中,ES5版本中有function(){}声明和return关键字,这两个关键字分别是创建函数和返回值所需要的。
  • 在箭头函数版本中,只需要()括号,不需要return语句,不需要return语句
  • 如果只有表达式或许需要返回,箭头函数就会有一个隐式的返回
 //ES5 Vesion
 funtction greet(name){
     return 'Hello ' + name + '!';
 }

 //ES6 Version
 const greet = (name) => 'Hello ${name}';
 const greet2 = name => 'Hello ${name}';
  • 可以在箭头函数中使用与函数表达式和函数声明相同的参数。一个箭头函数中又一个参数,则可以省略括号。
    const getArgs = () => arguments
    const getArgs2 = (...rest) => rest
  • 箭头函数不能arguments对象。调用第一个getArgs函数会抛出一个错误。相反,我可以使用rest参数来获取在箭头函数中传递的所有参数。
 const data = {
     result: 0,
     nums: [1,2,3,4,5],
     computerResult() {
         const addAll = () => {
             return this.nums.reduce((total,cur) => total + cur , 0)
         };
         this.result = addAll()
     }
 };
  • 箭头函数没有this值。它捕获词法作用域函数的this值
  • 在此示例中,addAll函数将复制computerResult方法中的this值,如果在全局作用域声明箭头函数,则this为当前对象。