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调用它,即newUser()。如果一个函数是可调用的,则可以在不使用新函数的情况下对其进行调用(即正常的函数调用)。
通过函数声明/表达式创建的函数是可构造的和可调用的。
箭头函数(和方法)仅可调用。类构造函数只能构造。
如果试图调用不可调用函数或构造不可构造函数,则会出现运行时错误。
let arrowFunc = () => {}
new arrowFunc()This code gives the error:
arrowFunc is not a constructor热门推荐
10 中秋送健康祝福语简短
11 跨年简短祝福语学生毕业
12 亲属登门拜年祝福语简短
13 哥哥生日礼包祝福语简短
14 嫁女儿祝福语女生简短
15 爸爸爱你祝福语大全简短
16 拥有爱的祝福语简短
17 网名简短祝福语搞笑男
18 优秀男士祝福语大全简短