箭头函数与普通函数的区别

箭头函数(Arrow Functions)是ES6(ECMAScript 2015)引入的一种新的函数定义方式,它提供了更简洁的语法和一些与传统函数表达式不同的行为。

在这里插入图片描述

以下是箭头函数与普通函数的主要区别:

  1. 语法上的简化

    • 普通函数:使用function关键字定义。
      function greet() {
        return "Hello, world!";
      }
      
    • 箭头函数:使用=>符号定义,可以省略function关键字,并且在单行返回值时可以省略return关键字和大括号。
      const greet = () => "Hello, world!";
      
  2. this绑定

    • 普通函数:this的值取决于函数调用的方式,它可以是全局对象、当前对象或未定义(严格模式下),或者通过callapplybind方法显式绑定。
    • 箭头函数:this是词法作用域的,它继承自外围最近的非箭头函数的作用域。这意味着箭头函数内部的this总是指向定义时所在的对象,而不是调用时的对象。
  3. arguments对象

    • 普通函数:有自己独立的arguments对象,用于访问传递给函数的所有参数。
    • 箭头函数:没有自己的arguments对象,但可以使用ES6的剩余参数(rest parameters)来实现类似的功能。
      const sum = (...args) => args.reduce((a, b) => a + b, 0);
      
  4. 构造函数

    • 普通函数:可以用new关键字作为构造函数来创建新对象。
    • 箭头函数:不能作为构造函数使用,使用new关键字调用箭头函数会抛出错误。
  5. 原型属性

    • 普通函数:有一个prototype属性,可以用来添加方法和属性到构造出来的实例上。
    • 箭头函数:没有prototype属性,因为它不是为了构造对象而设计的。
  6. 隐式返回

    • 普通函数:需要使用return语句明确地返回一个值。
    • 箭头函数:如果函数体只有一条语句,可以省略大括号和return关键字,该语句的结果将被自动返回。
  7. 命名

    • 普通函数:可以是命名函数(拥有名称)或匿名函数。
    • 箭头函数:通常是匿名的,尽管你可以将它们赋值给变量或作为参数传递给其他函数,但是箭头函数本身并没有名称(除非你特别给它起名)。

选择使用哪种类型的函数应该基于你的需求以及上述特性的考虑。如果你需要一个不会改变this值的回调函数,或者希望代码更加简洁,那么箭头函数可能是更好的选择。如果你需要构造函数或者依赖于传统的this绑定规则,则应使用普通函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943835.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp实现APP、小程序与webview页面间通讯

需求: 1、需要在Uniapp开发的APP或小程序页面嵌入一个H5网页,需要拿到H5给APP传递的数据。 2、并且这个H5是使用vuevant开发的。(其实跟使用uniapp开发H5一样) 实现步骤: 1、首先需要兼容多端和App端,因…

iPhone 17 :史诗级大改,120Hz 全面普及

资深果粉应该都听过一个说法:“iPhone 买单不买双”。这个“规律”似乎在iPhone 16上也得到了印证。 近段时间,各方消息都在指明一点:iPhone 16 只是大餐前的小菜,iPhone 17才是真正带来革命性提升的一代神机。下一代 iPhone 17&…

逆袭之路(11)——python网络爬虫:原理、应用、风险与应对策略

困厄铸剑心,逆袭展锋芒。 寒苦凝壮志,腾跃绘华章。 我要逆袭。 目录 一、引言 二、网络爬虫的基本原理 (一)网络请求与响应 (二)网页解析 (三)爬行策略 三、网络爬虫的应用领…

关系数据库

一些关系数据模型的常见概念->数据库概论-CSDN博客 目录 1、关系数据结构 1.1 笛卡尔积 1.2 关系的定义 1.3 关系的性质 2、关系代数 2.1 传统的集合运算 1. 并(union) 2. 交(intersection) 3. 差(difference) 4. 广义笛卡尔积(extended cartesian product) 2.2…

Unity中实现人物残影效果

今天火柴人联盟3公测了,看到一个残影的效果,很有意思,上网查询了一下实现方式, 实现思路: 将角色的网格复制出来,然后放置到新建的物体的MeshFilter组件上,每隔几十毫秒在玩家的位置生成一个&a…

计算机网络习题(第1章 概论 第2章 数据通信基础)

第1章 概论 1、计算机网络 2、互联网 3、计算机网络体系结构 分层模型 OSI/RM 7层模型 TCP/IP 5层模型 协议、PDU、SDU、SAP等术语 数据封装(计算) 第2章 数据通信基础 1、数据通信系统组成 2、主要性能指标 数据传输速率 码元速率 时延 3…

【连续学习之随机初始化算法 】2024Nature期刊论文Loss of plasticity in deep continual learning

1 介绍 年份:2024 期刊:Nature Dohare S, Hernandez-Garcia J F, Lan Q, et al. Loss of plasticity in deep continual learning[J]. Nature, 2024, 632(8026): 768-774. 本文提出的算法是“持续反向传播”(continual backpropagation&a…

Android Studio | 连接手机设备后,启动App时出现:Waiting For DebuggerApplication (App名)...

在这种情况下,打开目录文件,出现 Is:/storage/emulated/: Permission denied 问题分析: 以上两种情况表明应用程序试图访问Android设备的存储空间中的/storage/emulated/目录,但是没有足够的权限去执行这个操作。 解决办法&…

NodeRed使用心得,实现增删改查等

使用场景介绍 在VUE中使用nodeRed实现对节点的 增删改查等功能,且储存成功之后下点击时启动对应流程 安装与配置 1.安装NodeRed npm install -g --unsafe-perm node-red 安装完成后,你可以通过运行以下命令来启动Node-RED node-red-start2. 配置文件 N…

金仓数据库安装-Kingbase v9-centos

在很多年前有个项目用的金仓数据库,上线稳定后就没在这个项目了,只有公司的开发环境还在维护,已经好多年没有安装过了,重温一下金仓数据库安装,体验一下最新版本,也做一个新版本的试验环境; 一、…

“AI考训分析系统:让考试和训练更智能、更高效

大家好,我是你们的老朋友,一个资深的产品经理。今天咱们来聊聊一个教育领域的新宠儿——AI考训分析系统。这个系统可是个厉害角色,它不仅能帮学生提高学习效率,还能让老师们的工作变得更加轻松。下面我就跟大家伙儿分享一下这个系…

UE5 丧尸类杂兵的简单AI

A、思路 1、关卡初始化时,自动产生随机巡逻点,小兵到达后,去另一个随机巡逻点。 2、加入视力,发现主角后,不再巡逻,而开始追击主角并攻击。条件循环。 3、加入听力。主角的奔跑与射击会产生噪音&#xf…

【Compose multiplatform教程11】【组件】TextField组件

查看全部组件​编辑https://blog.csdn.net/b275518834/article/details/144751353 TextField 功能说明:提供用户输入文本的功能,可设置默认文本、提示文本以及文本样式,方便获取用户输入的内容,常用于数据采集场景。示例场景&am…

C# 将图片转换为PDF文档

将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。 文章…

计算机的错误计算(一百九十三)

摘要 用两个大模型化简计算 其中有关数字取弧度,结果保留5位有效数字。一个大模型进行了一次化简,另外一个大模型没有化简。两个大模型​​​​​均给出错误结果。 例1. 化简计算 其中有关数字取弧度,结果保留5位有效数字。 下面是与一个…

大模型-ChatGLM-6B模型部署与微调记录

大模型-ChatGLM-6B模型部署与微调记录 模型权重下载: 登录魔塔社区:https://modelscope.cn/models/ZhipuAI/chatglm2-6b 拷贝以下代码执行后,便可快速权重下载到本地 # 备注:最新模型版本要求modelscope > 1.9.0 # pip instal…

梳理你的思路(从OOP到架构设计)_介绍Android的Java层应用框架01

目录 1、传统无框架 2、 单层框架 3、 复合型框架 4、 双层框架 1、传统无框架 传统上,在没有框架的环境里,应用程序(Application,简称AP或App)会调用平台(如Linux或Windows等)平台的函数,如下图所示: 由于控制权掌握在App开…

基于SpringBoot在线音乐系统平台功能实现十七

一、前言介绍: 1.1 项目摘要 随着互联网技术的迅猛发展和普及,人们对音乐的获取和欣赏方式发生了巨大改变。传统的音乐播放方式,如CD、磁带或本地下载的音乐文件,已经不能满足用户日益增长的需求。用户更希望通过网络直接获取各…

SpringBoot配置文件、热部署、YAML语法、配置文件值注入

SpringBoot的配置文件 文章目录 SpringBoot的配置文件1.SpringBoot的热部署2.配置文件2.1配置文件的作用2.2YAML配置文件:2.3YAML 与 JSON 和 XML 的对比 3.YAML语法3.1键值对3.2值的写法3.3对象、Map(属性和值)(键值对&#xff0…

Linux | 零基础Ubuntu安装部署 Nginx服务

目录 介绍 安装部分 更新 安装 查看状态 测试网页 配置部分 备份默认文件 编辑文件 创建站点文件夹 编辑默认文件 Nginx检测 重新加载Nginx 测试网站 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。…