JavaScript箭头函数与传统函数有何区别?

admin 百科 9
箭头函数与传统函数最核心区别是this绑定方式不同:箭头函数this词法绑定、不可变,无arguments、不能new调用、无prototype;传统函数this动态绑定,支持arguments、new及call/apply/bind。

JavaScript箭头函数与传统函数有何区别?-第1张图片-佛山资讯网

箭头函数和传统函数最核心的区别在于 this 绑定方式不同,其次是语法、arguments、new 调用等行为有明显差异。理解这些区别能避免常见 bug,尤其在事件处理、定时器和对象方法中。

1. this 指向不可变,继承外层作用域

箭头函数没有自己的 this,它会沿作用域链向上查找,使用定义时所在上下文的 this 值,而不是调用时的。传统函数的 this 则取决于调用方式(如 obj.fn() 中 this 指向 obj,单独调用则指向全局或 undefined)。

常见陷阱示例:

  • 对象方法中用箭头函数,this 不指向该对象,而是外层(比如模块顶层或 class 外部)
  • 事件回调或 setTimeout 内使用箭头函数,可自然捕获外层 this,避免手动 bind

2. 无法作为构造函数,不能用 new 调用

箭头函数没有 [[Construct]] 内部方法,也没有 prototype 属性。尝试 new 一个箭头函数会直接抛出 TypeError。

立即学习“Java免费学习笔记(深入)”;

这意味着:不能用箭头函数模拟类、创建实例,也不应替代需要实例化的构造器逻辑。

标签: javascript java app 区别 作用域

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~