Javascript中的箭头功能

根据MDN,箭头函数表达式在语法上是常规函数表达式的紧凑替代方案,尽管没有与this,arguments,super或new.target关键字的绑定。箭头函数表达式不适合用作方法,并且不能用作构造函数。

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

  • 没有这个绑定

    箭头功能没有自己的值。箭头函数中的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参数数组中是一个特殊的对象,可用于获取传递给函数的所有参数。与此类似,箭头函数没有自己绑定到arguments对象的功能,它们绑定到了封闭范围的参数。

  • 箭头函数是可调用的,但不可构造。如果函数是可构造的,则可以使用new调用它,即new User()。如果一个函数是可调用的,则可以在不使用新函数的情况下对其进行调用(即正常的函数调用)。

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

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

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

示例

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

输出结果

此代码给出错误-

arrowFunc is not a constructor