首页 > web前端 > js教程 > 正文

javascript的箭头函数是什么_它与普通函数有何不同?

狼影
发布: 2025-12-21 21:19:22
原创
557人浏览过
箭头函数不绑定this、arguments、super和new.target,而是继承外层作用域;不能作为构造函数;无arguments对象,不可用call/apply/bind修改this,适合回调场景。

javascript的箭头函数是什么_它与普通函数有何不同?

箭头函数是 JavaScript 中定义函数的一种简洁语法,它不仅写法更短,更重要的是不绑定自己的 thisargumentssupernew.target,而是继承自外层作用域。这是它和普通函数最本质的区别

箭头函数没有独立的 this

普通函数调用时,this 的值取决于**如何被调用**(如作为对象方法、通过 call/apply、或独立调用);而箭头函数的 this 始终等于**定义时所在上下文的 this**,无法通过任何方式改变。

  • 在对象方法中使用箭头函数,this 不指向该对象,而是指向外层(比如全局或外层函数)
  • 无法用 callapplybind 修改箭头函数的 this
  • 适合用于回调(如 setTimeout、数组遍历),避免手动绑定 this

箭头函数不能作为构造函数

箭头函数没有 prototype 属性,也没有 [[Construct]] 内部方法,因此不能用 new 调用,否则会直接报错 TypeError: xxx is not a constructor

  • 普通函数可以: function Foo() {}new Foo() 合法
  • 箭头函数不行: const Bar = () => {}new Bar() 报错

箭头函数没有 arguments 对象

在普通函数内部,arguments 是一个类数组对象,包含所有传入参数;箭头函数里访问 arguments 会沿作用域链向上查找——也就是引用外层函数的 arguments,如果外层也没有,就报 ReferenceError

Dreamlike.art
Dreamlike.art

内置5种模型的AI图像生成器

Dreamlike.art 57
查看详情 Dreamlike.art

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

  • 替代方案:使用剩余参数 ...args(推荐,且两者都支持)
  • 例如:const sum = (...nums) => nums.reduce((a, b) => a + b, 0)

其他细节差异

箭头函数还缺少一些普通函数具备的特性:

  • 没有 super(不能在箭头函数中使用 super.xxx
  • 没有 new.target(无法检测是否被 new 调用)
  • 不能用作 Generator 函数(不支持 function* 语法,也不支持 yield
  • 简写形式下无函数名(匿名性更强,调试时堆显示为 anonymous

不复杂但容易忽略。选箭头函数还是普通函数,关键看是否需要动态 this、是否要当构造器、或者是否依赖 arguments —— 需要这些,就老老实实用 function

以上就是javascript的箭头函数是什么_它与普通函数有何不同?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号