js中的箭头函数和普通函数有什么区别

js中的箭头函数和普通函数有什么区别
最新回答
茴菿原点

2020-08-07 18:43:59

JS中箭头函数与普通函数的核心区别如下

1. 语法形式不同
箭头函数使用 => 符号定义(如 (a, b) => a + b),而普通函数通过 function 关键字声明(如 function add(a, b) { return a + b; })。

2. 构造函数与 new 关键字
箭头函数不能作为构造函数,因此无法通过 new 调用(如 new ArrowFunc() 会报错)。普通函数则支持构造函数调用。

3. arguments 对象
箭头函数不绑定 arguments 对象,需用剩余参数(如 (...args))替代。普通函数默认提供 arguments 对象。

4. this 绑定规则
箭头函数的 this 在定义时静态绑定到外层上下文,而普通函数的 this 在调用时动态确定(取决于调用方式)。
关键区别:箭头函数的 this 不会被 call、apply、bind 改变,而普通函数的 this 可通过这些方法显式绑定。

5. 原型属性
箭头函数没有 prototype 属性(如 ArrowFunc.prototype 为 undefined),普通函数则默认拥有该属性。

6. Generator 函数支持
箭头函数不能作为 Generator 函数,即无法使用 yield 关键字。普通函数可通过 function* 声明 Generator。

总结:箭头函数更适合简化回调或需要固定 this 的场景,而普通函数在需要动态 this、构造函数或 arguments 对象时更适用。