登录
首页 >  文章 >  前端

JavaScript箭头函数是什么?区别详解

时间:2025-12-15 17:31:25 283浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

在文章实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《JavaScript箭头函数是什么?与普通函数有何区别?》,聊聊,希望可以帮助到正在努力赚钱的你。

箭头函数是ES6引入的简洁函数写法,无独立this、arguments、super和new.target,不能作构造函数,适用于回调场景以避免this丢失,但不适用于对象方法或需继承的类方法。

JavaScript箭头函数是什么_和普通函数有何不同?

箭头函数是 ES6 引入的一种简洁的函数写法,用 => 定义,本质是函数表达式的简写形式。它和普通函数最核心的区别不在语法多“酷”,而在于 没有自己的 thisargumentssupernew.target,且不能作为构造函数使用。

箭头函数没有独立的 this

普通函数调用时,this 指向由调用方式决定(如对象方法调用指向该对象,单独调用指向全局或 undefined)。箭头函数则完全不绑定 this,它直接继承外层作用域的 this 值,且无法通过 callapplybind 改变。

  • 适合用在回调中避免 this 丢失,比如事件处理、定时器、数组方法(mapfilter)里需要访问当前对象属性时
  • 但不适合定义对象方法——因为它的 this 不指向该对象,容易出人意料

没有 arguments 对象

箭头函数内部访问不到 arguments,想获取参数得改用剩余参数(...args)。

  • 普通函数:function() { console.log(arguments[0]); }
  • 箭头函数:() => { const [first] = arguments; } ❌ 报错;应写成 (...args) => console.log(args[0]);

不能用作构造函数

箭头函数没有 prototype 属性,也不能用 new 调用,否则会抛出 TypeError

  • const Person = () => {}; new Person(); // TypeError: Person is not a constructor
  • 需要实例化对象时,必须用普通函数或 class

没有 new.target 和 super

箭头函数也不支持 new.target(检测是否被 new 调用)和 super(访问父类),所以不能用于类的方法重写或继承场景。

  • 类中的方法如果写成箭头函数(如 clickHandler = () => {}),只是绑定到实例的普通属性,不是原型方法,且无法用 super
  • 需明确区分:要继承/重写 → 用普通方法;要自动绑定 this → 可用箭头函数(但注意内存和语义)

基本上就这些。箭头函数不是“升级版”普通函数,而是定位清晰的轻量工具——适合写短小回调、保持词法作用域,但不该用来替代所有函数。用对地方很省心,乱用反而埋坑。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>