当前位置: 首页 > news >正文

【ES6复习笔记】箭头函数(5)

简介

本教程将介绍如何在 JavaScript 中使用箭头函数,包括箭头函数的基本语法、特点以及在实际开发中的应用。通过本教程,你将学会如何使用箭头函数来简化代码,提高代码的可读性和简洁性。

箭头函数的基本语法

箭头函数是 ES6 引入的一种新的函数定义方式,它使用箭头 => 来定义函数。箭头函数的基本语法如下:

(param1, param2,..., paramN) => {// 函数体
}

参数

箭头函数可以接受任意数量的参数,参数之间使用逗号分隔。如果函数只有一个参数,则可以省略参数列表的括号。例如:

let add = n => {return n + n;
}

函数体

箭头函数的函数体可以是一个表达式,也可以是一个代码块。如果函数体是一个表达式,则可以省略花括号和 return 关键字,此时表达式的结果就是函数的返回值。例如:

let pow = n => n * n;

如果函数体是一个代码块,则需要使用花括号将代码块包围起来,并且需要使用 return 关键字来返回函数的结果。例如:

let add = (n, m) => {return n + m;
}

箭头函数的特点

1. this 是静态的

箭头函数的 this 是静态的,它始终指向函数声明时所在作用域下的 this 的值。这意味着箭头函数不会创建自己的 this 上下文,而是继承外层函数的 this。例如:

function getName() {console.log(this.name);
}let getName2 = () => {console.log(this.name);
}window.name = '尚硅谷';
const school = {name: "ATGUIGU"
}getName(); // 输出: 尚硅谷
getName2(); // 输出: 尚硅谷getName.call(school); // 输出: ATGUIGU
getName2.call(school); // 输出: 尚硅谷

2. 不能作为构造函数

箭头函数不能作为构造函数,因此不能使用 new 关键字来实例化对象。例如:

let Person = (name, age) => {this.name = name;this.age = age;
}let me = new Person('xiao', 30); // 报错: Person is not a constructor

3. 不能使用 arguments 变量

箭头函数内部没有自己的 arguments 对象,因此不能使用 arguments 变量。如果需要访问函数的参数,可以使用剩余参数 ... 来获取。例如:

let fn = () => {console.log(arguments); // 报错: arguments is not defined
}fn(1, 2, 3);

4. 箭头函数的简写

省略小括号

当箭头函数只有一个参数时,可以省略参数列表的括号。例如:

let add = n => {return n + n;
}
省略花括号和 return 关键字

当箭头函数的函数体只有一条语句时,可以省略花括号和 return 关键字,此时语句的执行结果就是函数的返回值。例如:

let pow = n => n * n;

箭头函数的应用场景

箭头函数适用于以下场景:

  1. 回调函数:箭头函数非常适合作为回调函数,特别是在事件处理、定时器和数组方法中。
  2. 简洁的函数表达式:箭头函数可以使代码更加简洁,特别是在函数体很简单的情况下。
  3. 避免 this 指向问题:由于箭头函数的 this 是静态的,因此可以避免在回调函数中使用 this 时出现的指向问题。
let school = {name: '尚硅谷',getName() {let fn5 = () => {console.log(this); // 此处的this指向school对象}fn5();}
};
school.getName(); // 输出: 学校对象

箭头函数的注意事项

  1. 箭头函数没有自己的 this:箭头函数的 this 是继承自外层函数的,因此在使用箭头函数时,需要注意 this 的指向。
  2. 箭头函数不能作为构造函数:箭头函数不能使用 new 关键字来实例化对象。
  3. 箭头函数没有 arguments 对象:箭头函数内部没有自己的 arguments 对象,因此不能使用 arguments 变量。
  4. 箭头函数的简写:在使用箭头函数的简写形式时,需要注意函数体的复杂性,避免代码过于晦涩难懂。

总结

箭头函数是 ES6 引入的一种新的函数定义方式,它具有简洁的语法和一些特殊的特性。箭头函数的 this 是静态的,它不会创建自己的 this 上下文,而是继承外层函数的 this。箭头函数不能作为构造函数,也没有自己的 arguments 对象。在实际开发中,箭头函数适用于回调函数、简洁的函数表达式以及避免 this 指向问题的场景。在使用箭头函数时,需要注意其特点和注意事项,以确保代码的正确性和可读性。

相关文章:

【ES6复习笔记】箭头函数(5)

简介 本教程将介绍如何在 JavaScript 中使用箭头函数,包括箭头函数的基本语法、特点以及在实际开发中的应用。通过本教程,你将学会如何使用箭头函数来简化代码,提高代码的可读性和简洁性。 箭头函数的基本语法 箭头函数是 ES6 引入的一种新…...

单片机学习笔记——入门51单片机

一、单片机基础介绍 1.何为单片机 单片机,英文Micro Controller Unit,简称MCU 。内部集成了中央处理器CPU、随机存储器ROM、只读存储器RAM、定时器/计算器、中断系统和IO口等一系列电脑的常用硬件功能 单片机的任务是信息采集(依靠传感器&a…...

Docker Run使用方法及参数详细说明

Docker Run使用方法及参数详细说明 基本语法常用参数使用示例总结Docker Run是Docker中最基本的命令之一,用于创建并启动一个新的容器。通过Docker Run,用户可以基于指定的镜像创建一个容器实例,并且可以配置容器的各种参数,如网络设置、存储选项等。下面将详细介绍Docker …...

面试场景题系列:设计限流器

首先看看使用API限流器的好处。 •预防由拒绝服务攻击(Denial of Service,DoS)引起的资源耗尽问题。大型科技公司发布的所有API几乎都强制执行某种形式的限流操作。例如,推特限制每个用户每3小时最多发300条推文。谷歌文档API的默认限制是每个用户每60秒…...

【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块

目录 一、温度传感器模块 (1)资源介绍 🔅原理图 🔅STS30-DIS-B 🌙引脚分配 🌙通信 🌙时钟拉伸(Clock Stretching) 🌙单次触发模式 🌙温度数据转…...

网狐旗舰版源码搭建概览

简单的列一下: 服务端源码内核源码移动端源码核心移动端源码AI控制工具源码多款子游戏源码前端、管理后台、代理网站源码数据库自建脚本UI工程源码配置工具及二次开发帮助文档 编译环境要求 VS2015 和 Cocos3.10 环境,支持移动端 Android 一键编译&am…...

vue3中使用vuedraggable实现拖拽

包安装方式 yarn add vuedraggablenext npm i -S vuedraggablenext属性说明 如果下面的属性说明未能完全看明&#xff0c;可以看左边的对应的菜单查看详细说明和例子。 完整例子 <template><div class"itxst"><div><draggable:list"s…...

leetcode 7. 整数反转

class Solution { public: int reverse(int x) { long long n0; if(x0) return 0; while(x%100) { xx/10; } while(x!0) { nn*10x%10; xx/10; } if(n<-2147483648||n>2147483647) return 0; return n; } };...

Nginx单向链表 ngx_list_t

目录 基本概述 数据结构 接口描述 具体实现 ngx_list_create ngx_list_init ngx_list_push 使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx&#xff1a;模块开发与架构解析》 基本概述 Nginx 中的 ngx_list_t 是一个单向链表容器&#xff0c;链表中的每一个节…...

go语言中的字符串详解

目录 字符串的基本特点 1.字符串的不可变性 2.其他基本特点 字符串基本操作 1. 创建字符串 2. 获取字符串长度 3. 字符串拼接 4. 遍历字符串 5. 字符串比较 字符串常用函数 1. 判断子串 2. 查找与索引 3. 字符串替换 4. 分割与连接 5. 修剪字符串 6. 大小写转换…...

Windows脚本清理C盘缓存

方法一&#xff1a;使用power文件.ps1的文件 脚本功能 清理临时文件夹&#xff1a; 当前用户的临时文件夹&#xff08;%Temp%&#xff09;。系统临时文件夹&#xff08;C:\Windows\Temp&#xff09;。 清理 Windows 更新缓存&#xff1a; 删除 Windows 更新下载缓存&#xff0…...

分布式协同 - 分布式事务_2PC 3PC解决方案

文章目录 导图Pre2PC&#xff08;Two-Phase Commit&#xff09;协议准备阶段提交阶段情况 1&#xff1a;只要有一个事务参与者反馈未就绪&#xff08;no ready&#xff09;&#xff0c;事务协调者就会回滚事务情况 2&#xff1a;当所有事务参与者均反馈就绪&#xff08;ready&a…...

永磁同步电机负载估计算法--自适应扩张状态观测器

一、 原理介绍 在线性扩张观测器中&#xff0c;LESO观测器增益ω0 决定了观测器的跟踪速度&#xff0c;ω0 越大&#xff0c;观测器估计精度越高&#xff0c; 抗干扰能力越强&#xff0c;瞬态响应速度加快&#xff0c;过大则会引入高频噪声使系统不稳定。为使观测器在全速域内…...

【HarmonyOS应用开发——ArkTS语言】购物商城的实现【合集】

目录 &#x1f60b;环境配置&#xff1a;华为HarmonyOS开发者 &#x1f4fa;演示效果&#xff1a; &#x1f4d6;实验步骤及方法&#xff1a; 1. 在src/main/ets文件中创建components文件夹并在其中创建Home.ets和HomeProduct.ets文件。​ 2. 在Home.ets文件中定义 Home 组…...

Python二维码生成器qrcode库

要在Python中生成二维码&#xff0c;你可以使用 qrcode 库。这个库非常方便&#xff0c;允许你生成并保存二维码图像。下面是一个简单的示例&#xff0c;展示了如何使用 qrcode 库生成二维码。 首先&#xff0c;你需要安装 qrcode 库。你可以使用 pip 来安装它&#xff1a; s…...

Python:模拟(包含例题:饮料换购 图像模糊 螺旋矩阵)

模拟题&#xff1a;直接按照题目含义模拟即可&#xff0c;一般不涉及算法 注意&#xff1a; 1.读懂题&#xff1a;理清楚题目流程 2.代码和步骤一一对应&#xff1a;变量名&#xff0c;函数名&#xff0c;函数功能 3.提取重复的部分&#xff0c;写成对应的函数&#xff08;…...

git分支与部署环境的关系以及开发规范

一 某金融机构 1.1 分支分类以及作用 1.master master分支为主分支,用于部署生产环境的分支,无论任何时候都要确保master分支的稳定性;master分支由feature及hotfix分支合并,任何时间都不能直接修改代码。目前用于老仿真和老生产,暂时不动。 2.prod 主分支,是master…...

2024最新鸿蒙开发面试题合集(一)-HarmonyOS NEXT Release(API 12 Release)

1. HarmonyOS应用打包后的文件扩展名是? 打包后的文件扩展名为.hap&#xff08;HarmonyOS Ability Package&#xff09;&#xff0c;这是HarmonyOS应用的标准包格式 2. 页面和自定义组件生命周期有哪些? 页面和自定义组件生命周期说明 有Entry装饰器的component组件的生命…...

【mybatis】详解 # 和 $ 的区别,两者分别适用于哪种场景,使用 $ 不当会造成什么影响

# 和 $ 的区别 在MyBatis中&#xff0c;# 和 $ 是用来处理参数的两种不同方式&#xff0c;它们之间有一些重要的区别&#xff1a; # 符号&#xff1a; # 是用来进行参数占位符的&#xff0c;它会进行 SQL 注入防护。使用 # 时&#xff0c;MyBatis 会将参数值进行预处理&…...

Java面试题,数据结构,图的最短路径算法应用于社交网络分析

图的最短路径算法应用于社交网络分析 在一个大型社交网络中&#xff0c;用户想要找到连接两个特定用户的最短路径。假设你已经有了这个社交网络的数据模型&#xff0c;其中节点代表用户&#xff0c;边代表用户之间的关系。请设计一个解决方案&#xff0c;以找出两个用户之间的…...

实战应用:基于快马构建高保真抖音模块,为技术方案选型与竞品分析提供实例

最近在研究抖音最新版本的技术实现方案&#xff0c;发现用InsCode(快马)平台可以快速搭建一个高保真的功能模拟应用。这个实战项目不仅能帮助理解抖音的核心模块设计&#xff0c;还能为技术选型提供直观参考。下面分享下我的实现思路和关键要点&#xff1a; 智能推荐流实现 通过…...

PlatformIO+Arduino下ESP32 ULP协处理器集成指南

1. 项目概述ulptool-pio是一个专为 PlatformIO 生态设计的轻量级构建集成工具&#xff0c;其本质是duff2013/ulptool的功能增强型分支。该工具的核心工程目标非常明确&#xff1a;在 Arduino 框架下打通 ESP32 ULP&#xff08;Ultra Low Power&#xff09;协处理器的完整编译、…...

Isaac Sim 6 利用Replicator实现高效语义分割与实例分割(实践指南5.10)

1. 为什么选择Isaac Sim生成分割数据集&#xff1f; 在计算机视觉项目中&#xff0c;语义分割和实例分割是两项基础但极其耗时的任务。传统的数据标注方式需要人工逐像素标注&#xff0c;一个1000张图片的数据集可能需要团队花费数周时间。而使用Isaac Sim的Replicator工具&…...

pytorch求二维张量转置的几种方法

方法1方法2方法3方法4...

如何快速上手AICoverGen:免费制作专业级AI翻唱歌曲的完整指南

如何快速上手AICoverGen&#xff1a;免费制作专业级AI翻唱歌曲的完整指南 【免费下载链接】AICoverGen A WebUI to create song covers with any RVC v2 trained AI voice from YouTube videos or audio files. 项目地址: https://gitcode.com/gh_mirrors/ai/AICoverGen …...

专业术语统计报告_多种能源发电协同发展管控模型及大数据分析研究

专业术语统计报告_多种能源发电协同发展管控模型及大数据分析研究 一、概要简析 【概要分析】 本文档《多种能源发电协同发展管控模型及大数据分析研究》围绕研究主题展开系统性的探讨。文档总字符数达141569&#xff0c;其中中文字符80856个&#xff0c;英文字词5332个&#x…...

从零构建:麦克纳姆轮底盘的运动学模型与O-长方形布局解析

1. 麦克纳姆轮基础原理与结构解析 第一次接触麦克纳姆轮时&#xff0c;我被它那酷似"风火轮"的外观吸引了。这种特殊设计的轮子由瑞典工程师Bengt Ilon在1973年发明&#xff0c;如今已成为移动机器人领域的明星组件。让我带你从最基础的物理结构开始&#xff0c;逐步…...

3分钟上手的跨平台模组管理神器:Lumafly核心优势解析

3分钟上手的跨平台模组管理神器&#xff1a;Lumafly核心优势解析 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 还在为空洞骑士模组安装时的依赖缺失而头疼&am…...

S2-Pro集成Python爬虫实战:自动化数据采集与智能分析应用

S2-Pro集成Python爬虫实战&#xff1a;自动化数据采集与智能分析应用 1. 引言&#xff1a;当爬虫遇上大模型 最近帮一家电商公司做市场调研时&#xff0c;遇到了一个典型问题&#xff1a;他们需要监控竞品价格和用户评价&#xff0c;但手动收集数据效率太低。传统爬虫能抓取数…...

前后端分离网站系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着互联网技术的快速发展&#xff0c;传统的前后端耦合架构在开发效率和维护成本上逐渐显现出局限性&#xff0c;前后端分离架构因其灵活性、可扩…...