Javascript 中的箭头函数

javascriptfront end technologyobject oriented programming更新于 2024/5/18 16:12:17

根据 MDN,箭头函数表达式是常规函数表达式的一种语法紧凑的替代方法,尽管它没有自己的 this、arguments、super 或 new.target 关键字绑定。箭头函数表达式不适合用作方法,也不能用作构造函数。

JavaScript 中的常规函数​​和箭头函数有 3 个细微的差别。

  • 没有自己的 this 绑定

    箭头函数没有自己的值。箭头函数内部的 this 值始终从封闭范围继承。

示例

this.a = 100;
let arrowFunc = () => {this.a = 150};
function regFunc() {
   this.a = 200;
}
console.log(this.a)
arrowFunc()
console.log(this.a)
regFunc()
console.log(this.a)

输出

将给出输出 −

100
150
150

可以看到箭头函数在其作用域之外更改了此对象。常规函数只是在其自身内进行了更改。

  • 箭头函数没有参数数组 在 JS 中,函数中的参数数组是一个特殊对象,可用于获取传递给函数的所有参数。与此类似,箭头函数没有自己与参数对象的绑定,而是与封闭范围的参数绑定。
  • 箭头函数可调用但不可构造。如果函数是可构造的,则可以使用 new 来调用它,即 new User()。如果函数是可调用的,则可以不使用 new 来调用它(即正常函数调用)。

通过函数声明/表达式创建的函数既可构造又可调用。

箭头函数(和方法)仅可调用。类构造函数仅可构造。

如果您尝试调用不可调用的函数或构造非构造函数,则会出现运行时错误。

示例

let arrowFunc = () => {}
new arrowFunc()

输出

此代码给出错误 −

arrowFunc is not a constructor

相关文章


有用资源