javascript箭头函数是什么_与普通函数有何不同【教程】
发布时间 - 2026-01-30 00:00:00 点击率:次箭头函数不是语法糖,它没有自己的this、arguments、super、new.target,不能作为构造函数,不绑定this(继承外层词法作用域),无prototype,无arguments对象,返回对象需加括号,类字段中使用会导致this脱离实例上下文。
箭头函数 
this、arguments、super 或 new.target,也不能用作构造函数——这是最根本的区别,不是“写法更短”那么简单。
箭头函数没有独立的 this 绑定
普通函数的 this 取决于调用方式(如 obj.method() 中 this 指向 obj),而箭头函数的 this 始终继承自外层词法作用域:
- 在对象方法中直接使用箭头函数,
this不会指向该对象,而是指向定义时的外层上下文(通常是全局或模块顶层) - 无法通过
.call()、.apply()或.bind()改变箭头函数的this - 事件回调里若需访问触发元素,写成
event => { ... }是安全的;但若写成() => { this.xxx }且期望this是 DOM 元素,则一定出错
箭头函数不能用 new 调用
因为箭头函数没有 [[Construct]] 内部方法,也没有原型对象:
- 执行
new (() => {})会抛出TypeError: xxx is not a constructor - 没有
prototype属性:(() => {}).prototype是undefined - 想封装可实例化的逻辑,必须用
function声明或class,不能用箭头函数替代
箭头函数没有 arguments 对象
普通函数体内可直接访问 arguments 类数组,箭头函数里访问到的是外层函数的 arguments(如果存在),否则是 ReferenceError:
- 需要类数组参数时,优先用剩余参数
(...args) => {...},它更明确、也兼容严格模式 - 在递归场景(如简单阶乘)中误用箭头函数,会因拿不到
arguments.callee(已废弃)或无法正确引用自身而出错 - 与
setTimeout等异步回调嵌套时,若依赖arguments[0]传参,换成箭头函数后可能意外读到上层的arguments
返回值隐式简写有陷阱
当箭头函数体只有一条表达式且省略大括号时,会自动返回该表达式的值;但若想返回对象字面量,必须加小括号:
-
x => { foo: x }实际返回undefined(因为花括号被解析为代码块,不是对象) - 正确写法是
x => ({ foo: x }),否则对象字面量不生效 - 返回空对象?
() => ({})—— 少了括号就变成() => {}(空代码块,返回undefined)
真正容易被忽略的,是箭头函数在类字段中声明方法时对 this 的静默捕获:它让方法脱离实例上下文,导致绑定失效或测试难模拟。别只盯着“写起来短”,先看清楚你是否真的需要那个词法 this。
# javascript
# java
# app
# 区别
# 作用域
# 封装
# 构造函数
# 递归
# 阶乘
# 继承
# class
# Event
# undefined
# function
# 对象
# 事件
# constructor
# 严格模式
# dom
# this
# 异步
# prototype
# 自己的
# 绑定
# 不能用
# 回调
# 的是
# 这是
# 则是
# 盯着
# 少了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
jquery插件bootstrapValidator表单验证详解
Android实现代码画虚线边框背景效果
如何快速查询网址的建站时间与历史轨迹?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
JS弹性运动实现方法分析
如何在橙子建站上传落地页?操作指南详解
iOS验证手机号的正则表达式
linux top下的 minerd 木马清除方法
如何在IIS中新建站点并解决端口绑定冲突?
,交易猫的商品怎么发布到网站上去?
如何有效防御Web建站篡改攻击?
Laravel怎么调用外部API_Laravel Http Client客户端使用
如何基于PHP生成高效IDC网络公司建站源码?
高端建站如何打造兼具美学与转化的品牌官网?
装修招标网站设计制作流程,装修招标流程?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
如何在万网ECS上快速搭建专属网站?
Laravel如何处理CORS跨域请求?(配置示例)
php json中文编码为null的解决办法
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Swift中switch语句区间和元组模式匹配
Laravel如何使用Service Container和依赖注入?(代码示例)
WEB开发之注册页面验证码倒计时代码的实现
如何在阿里云购买域名并搭建网站?
怎样使用JSON进行数据交换_它有什么限制
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
奇安信“盘古石”团队突破 iOS 26.1 提权
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
北京专业网站制作设计师招聘,北京白云观官方网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
网站制作价目表怎么做,珍爱网婚介费用多少?
zabbix利用python脚本发送报警邮件的方法
常州企业网站制作公司,全国继续教育网怎么登录?
Laravel如何使用Eloquent进行子查询
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何在Windows服务器上快速搭建网站?
Linux后台任务运行方法_nohup与&使用技巧【技巧】
网站制作大概多少钱一个,做一个平台网站大概多少钱?
浅谈redis在项目中的应用
如何快速完成中国万网建站详细流程?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
Python函数文档自动校验_规范解析【教程】

