javascript箭头函数是什么_它与普通函数有什么区别?

发布时间 - 2025-12-27 00:00:00    点击率:
箭头函数是ES6引入的简洁函数语法,无this/arguments/super/new.target,不能作构造函数,适合简短回调但不适用需动态this或实例化的场景。

箭头函数是 ES6 引入的一种简洁的函数定义语法,它没有自己的 thisargumentssupernew.target,行为更轻量,也更适用于某些场景。

语法更简洁

箭头函数省略了 function 关键字和 return(单表达式时自动返回),写起来更紧凑:

  • 普通函数:const add = function(a, b) { return a + b; };
  • 箭头函数:const add = (a, b) => a + b;
  • 单参数可省括号:const square = x => x * x;
  • 无参需写空括号:const sayHi = () => "Hello";

this 绑定方式不同

普通函数的 this 取决于调用方式(谁调用,this 就是谁);箭头函数没有自己的 this,它会沿作用域链向上找外层最近的非箭头函数的 this 值,且无法通过 callapplybind 改变。

  • 这意味着在对象方法或事件回调中,用箭头函数容易“意外”保留定义时的 this,比如定时器里访问对象属性时可能出错。
  • 如果需要动态 this(如 Vue 方法、React 类组件事件处理),通常得用普通函数。

不能作为构造函数

箭头函数没有 prototype,也没有 [[Construct]] 内部方法,所以不能用 new 调用,否则会报错。

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

没有 arguments 对象

箭头函数内部访问 arguments 会报错或取到外层函数的 arguments(如果存在)。替代方案是使用剩余参数 ...args

  • 普通函数:function sum() { return Array.from(arguments).reduce((a, b) => a + b); }
  • 箭头函数:const sum = (...args) => args.reduce((a, b) => a + b);

基本上就这些。箭头函数不是万能替代品,而是补充工具——适合简短逻辑、避免 this 混乱的回调,但不适合需要动态上下文或构造能力的场景。


# vue  # react  # javascript  # es6  # java  # app  # 工具  # 区别  # 作用域  # red 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  如何在IIS中新建站点并配置端口与物理路径?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel如何使用Blade模板引擎?(完整语法和示例)  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel安装步骤详细教程_Laravel环境搭建指南  如何在IIS中新建站点并配置端口与IP地址?  Android利用动画实现背景逐渐变暗  高性能网站服务器配置指南:安全稳定与高效建站核心方案  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何优化应用性能?(缓存和优化命令)  怎样使用JSON进行数据交换_它有什么限制  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  iOS验证手机号的正则表达式  制作电商网页,电商供应链怎么做?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  详解阿里云nginx服务器多站点的配置  黑客入侵网站服务器的常见手法有哪些?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  如何快速生成ASP一键建站模板并优化安全性?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在云主机快速搭建网站站点?  WordPress 子目录安装中正确处理脚本路径的完整指南  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  如何基于云服务器快速搭建个人网站?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  详解vue.js组件化开发实践  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  lovemo网页版地址 lovemo官网手机登录  如何在橙子建站上传落地页?操作指南详解  Laravel如何使用模型观察者?(Observer代码示例)  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  浅述节点的创建及常见功能的实现  详解jQuery中的事件  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  韩国服务器如何优化跨境访问实现高效连接?  如何快速搭建高效简练网站?  如何快速查询域名建站关键信息?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何实现建站之星域名转发设置?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Swift中swift中的switch 语句