JavaScript中的箭头函数与常规函数

箭头功能与JS中的常规功能有何不同?


自JavaScript诞生以来,常规函数就是“老派”函数:

function run() {

}

它们可以直接运行:

run()

或者可以将它们分配给变量:

const run = function run() {

}

run()

这样做时,该功能可以匿名:

const run = function () {

}

run()

唯一的区别是,现在在出现错误时出现的堆栈跟踪中,您将不再看到函数名称。

2015年ES6中引入的Arrow函数有点像常规函数的最后一个版本,因为它们没有名称。绝不。

语法“足迹”较小:

const run = () => {

}

run()

如果有一个参数,则可以省略括号:

const run = param => {

}

run()

如果只有一条语句,我们也可以省略花括号:

const run = param => 'running'
run()

在这种情况下,返回值是字符串'running'

箭头函数和常规函数都可以用作对象方法。

现在,这两个功能之间的最大区别在于this绑定在一个方法中。

考虑以下示例:

const car = {
  brand: 'Ford',
  model: 'Fiesta',
  start: function() {
    console.log(`Started ${this.brand} ${this.model}`)
  },
  stop: () => {
    console.log(`Stopped ${this.brand} ${this.model}`)
  }
}

this在里面start()方法是指对象本身。

但是在stop()方法,这是一个箭头函数,不是。

this没有绑定到对象实例。它指出了什么this指向外部范围。

这意味着箭头功能不适用于对象方法当您想访问时this

免费下载我的JavaScript初学者手册


更多js教程: