【前端每日基础】day23——箭头函数
箭头函数是ES6(ECMAScript 2015)引入的一种新的函数表达式语法。相比传统函数,箭头函数有简洁的语法,并且不绑定自己的this、arguments、super或new.target。以下是详细介绍箭头函数的各个方面:
基本语法
单参数箭头函数
如果箭头函数只有一个参数,可以省略参数周围的括号:
// 传统函数
let greet = function(name) {return "Hello, " + name;
};// 箭头函数
let greet = name => {return "Hello, " + name;
};
多参数箭头函数
如果箭头函数有多个参数,需要使用括号将参数括起来:
let sum = (a, b) => {return a + b;
};
无参数箭头函数
如果箭头函数没有参数,仍然需要使用空括号:
let sayHello = () => {return "Hello!";
};
简写形式
如果箭头函数的函数体只有一条语句,并且是返回值,则可以省略大括号和return关键字:
// 带大括号和return的写法
let square = x => {return x * x;
};
// 简写形式
let square = x => x * x;
this绑定
箭头函数最显著的特点之一是它不会创建自己的this上下文,而是从其外层上下文中继承this。这使得在某些场景下使用箭头函数更为方便,尤其是在需要保留外层this的情况下。
传统函数中的this问题
function Person() {this.age = 0;setInterval(function growUp() {this.age++; // 这里的this指向的是全局对象(或undefined,取决于是否在严格模式下)}, 1000);
}let p = new Person();
箭头函数中的this绑定
function Person() {this.age = 0;setInterval(() => {this.age++; // 这里的this指向的是Person实例}, 1000);
}let p = new Person();
其他特性
不绑定arguments对象
箭头函数不绑定arguments对象,但可以使用rest参数语法代替:
let traditionalFunction = function() {console.log(arguments); // 类数组对象,包含所有参数
};
traditionalFunction(1, 2, 3); // 输出[1, 2, 3]let arrowFunction = (...args) => {console.log(args); // 数组,包含所有参数
};
arrowFunction(1, 2, 3); // 输出[1, 2, 3]
不能作为构造函数
箭头函数不能用作构造函数,使用new关键字调用箭头函数会抛出错误:
let Foo = () => {};
let foo = new Foo(); // TypeError: Foo is not a constructor
没有prototype属性
由于箭头函数不能用作构造函数,它们也没有prototype属性:
javascript
复制代码
let Foo = () => {};
console.log(Foo.prototype); // 输出undefined
使用场景
简化回调函数:箭头函数在编写简短的回调函数时特别有用。
javascript
复制代码
// 传统回调函数
[1, 2, 3].map(function(x) {return x * x;
});
// 箭头函数
[1, 2, 3].map(x => x * x);
保持this的上下文:在需要访问外层this的情况下,箭头函数非常适合。
function Timer() {this.seconds = 0;setInterval(() => {this.seconds++;console.log(this.seconds);}, 1000);
}
let timer = new Timer();
简洁的函数表达式:当需要简洁的函数表达式时,箭头函数提供了更为简便的语法。
相关文章:
【前端每日基础】day23——箭头函数
箭头函数是ES6(ECMAScript 2015)引入的一种新的函数表达式语法。相比传统函数,箭头函数有简洁的语法,并且不绑定自己的this、arguments、super或new.target。以下是详细介绍箭头函数的各个方面: 基本语法 单参数箭头函…...
27.Java中单例模式的实现方式
一、单例模式 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。 单例模式中: 这个类只能有一个实例这个类必须自己创建自己的唯一实例这个类必须…...
C#面:当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
一个线程在访问一个对象的一个synchronized方法时: 另一个线程可以同时访问这个对象的非同步方法。另一个线程不可以同时访问这个对象的普通同步方法。另一个线程可以同时访问这个对象的静态同步方法 ,即static synchronized修饰的方法 。另一个线程不可…...
express框架下后端获取req.body报错undefined
express框架下后端获取req.body报错undefined_express服务器post中data为undefine-CSDN博客 /*** 特殊说明:Express是一个单线程服务器器程序【必须存在指定的顺序调用,否则无法达到预期的效果】*//*** 第一步:创建一个Express实例对象,并且在匹配路由之…...
Element plus 低版本弹窗组件添加拖拽功能
在使用element plus 弹窗组件el-dialog 的时候,由于自己组件库版本过低,所以就会缺失某些功能,比如弹窗组件的可拖拽功能。因为某些原因element plus 组件库又不能升级,所以此时就需要自己为弹窗组件添加拖拽功能。共分为一下四个…...
计算机组成原理易混淆知识点总结(持续更新)
目录 1.机器字长,存储字长与指令字长 2.指令周期,机器周期,时钟周期 3.CPI,IPS,MIPS 4.翻译程序和汇编程序 5.计算机体系结构和计算机组成的区别和联系 6.基准程序执行得越快说明机器的性能越好吗? 1.机器字长,存储字长与指令字长 不同的机器三者…...
【STM32踩坑】HAL固件库版本过高导致烧录后无法运行问题
问题引入 目前STM32CUBEMX已经更新到了6.11版本,对应的固件库也一直在更新; 以STM32F1库为例,目前最新的库对应版本为1.8.5 但是我们会发现,如果直接使用1.8.5版本的固件库生成HAL源码后,烧录是可以烧录,但…...
芯片丝印反查
芯片丝印反查网 - IC芯片丝印,IC芯片代码,IC芯片印字,IC芯片顶标,SMD code,marking code,top mark芯查查-电子信息产业数据引擎 ic/芯片丝印反查网-芯查查...
C语言之指针详解(5)(含有易错笔试题)
文章目录 一、sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof 和 strlen 的对比 二、数组和指针笔试题2.1 一维数组2.2 字符数组2.3 二维数组 三、指针运算笔试题3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目7 一、sizeof和strlen的对比 有一个很神…...
discuzX2.5的使用心得 札记一
从开始接受php论坛的开发任务,对php感兴趣的我开始迷恋上discuz这个产品了, 像戴志康这样的创新人才,是我们这代人的骄傲和学习的榜样 应该是了解一下,啥事discuzX2.5,百度看一下 discuz x2.5_百度百科 看完百度词条…...
【Python】 探索Django框架的高并发处理能力
基本原理 Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django遵循MVC(模型-视图-控制器)设计模式,提供了一个全栈式的解决方案,使得开发者能够快速构建功能丰富的Web应用。Django的高并发处…...
C-数据结构-平横二叉树
平衡二叉树(Balanced Binary Tree)是一种二叉树,其中任意节点的两棵子树的高度差不超过 1。也可以说是一棵空树或者左右子树高度差不超过 1 的二叉树。 特点和性质 高度平衡:平衡二叉树是一种高度平衡的二叉树,任意节…...
算法训练营day41
动态规划理论基础(主要就是确定动态规划的几个步骤) 题目1:509. 斐波那契数 - 力扣(LeetCode) class Solution { public:int fib(int n) {if(n 0) return 0;if(n 1) return 1;int dp1 0;int dp2 1;int dp3 0;fo…...
cesium开发实例分享
反正 cesium 看到的效果几乎都有...
字符串和字符串函数(1)
前言: 字符串在C语言中比较特别,没有单另的字符串类型,想要初始化字符串必须用字符变量的数组初始化,但是在C语言标准库函数中提供了大量能对字符串进行修改的函数,比如说可以实现字符串的的拷贝,字符串的追…...
基于springboot+vue的班级综合测评管理系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
蓝海项目揭秘:跨境选品师的崛起与挑战
随着全球化贸易的日益深入和电子商务的蓬勃发展,跨境选品师这一新兴职业逐渐走进人们的视野。跨境选品师,顾名思义,就是专门负责为跨境电商平台挑选和推荐适合海外市场的商品的专业人士。那么,跨境选品师这一职业能否被视为一个蓝…...
酷黑简洁大气体育直播自适应模板赛事直播门户网站源码
源码名称:酷黑简洁大气体育直播自适应模板赛事直播门户网站源码 开发环境:帝国cms 7.5 安装环境:phpmysql 支持PC与手机端同步生成html(多端同步生成插件) 带软件采集,可以挂着自动采集发布,无…...
2024年电工杯高校数学建模竞赛(B题) 建模解析| 大学生平衡膳食食谱的优化设计
问题重述及方法概述 问题1:膳食食谱的营养分析评价及调整 数学方法:线性规划模型、营养素评价模型、比较分析 可视化数据图:营养素含量表、营养素摄入量对比图、营养素缺乏情况图 问题2:基于附件3的日平衡膳食食谱的优化设计 数…...
学习编程对英语要求高吗?
学习编程并不一定需要高深的英语水平。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我在后台发给你。 虽然一些编程资源和文档可能…...
4大模块构建企业级专利智能分析平台:基于Google Patents Public Data的深度技术解析
4大模块构建企业级专利智能分析平台:基于Google Patents Public Data的深度技术解析 【免费下载链接】patents-public-data Patent analysis using the Google Patents Public Datasets on BigQuery 项目地址: https://gitcode.com/gh_mirrors/pa/patents-public-…...
告别数据焦虑:用GetQzonehistory永久保存你的QQ空间回忆
告别数据焦虑:用GetQzonehistory永久保存你的QQ空间回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心过QQ空间里那些承载着青春记忆的说说、照片会突然消失&…...
EPM7256AETC100-10N:Altera MAX 7000A系列CPLD,256宏单元,TQFP-100封装
做数字电路设计的人都遇到过这种尴尬:需要几个逻辑门、需要做个地址译码、需要把几个信号拼一下——专门放一颗MCU太浪费,用分立门电路又占地方,改一版PCB还得等两周。EPM7256AETC100-10N给出的答案很简单:把256个宏单元、5000个可…...
Hunyuan-MT-7B多语翻译实战:跨境电商独立站商品页SEO多语内容批量生成
Hunyuan-MT-7B多语翻译实战:跨境电商独立站商品页SEO多语内容批量生成 1. 项目背景与价值 跨境电商独立站面临的最大挑战之一,就是如何为不同语言市场的用户提供本地化的商品内容。传统的人工翻译方式成本高、效率低,而机器翻译又往往无法保…...
Wan2.2-I2V-A14B开源镜像实测:xFormers+FlashAttention-2加速推理35%+
Wan2.2-I2V-A14B开源镜像实测:xFormersFlashAttention-2加速推理35% 1. 镜像概述与核心价值 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像,它让高质量视频生成变得触手可及。这个镜像最吸引人的地方在于,它已经为你准备好了所…...
VideoAgentTrek-ScreenFilter效果展示:远程桌面RDP协议画面中窗口标题栏识别
VideoAgentTrek-ScreenFilter效果展示:远程桌面RDP协议画面中窗口标题栏识别 你有没有遇到过这样的场景?在观看远程桌面录屏或视频会议录像时,屏幕上密密麻麻的窗口标题栏、任务栏、系统托盘图标,让人眼花缭乱。特别是当需要分析…...
忍者像素绘卷开源镜像部署:支持国产昇腾芯片的适配可行性分析
忍者像素绘卷开源镜像部署:支持国产昇腾芯片的适配可行性分析 1. 项目概述与技术特点 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,专为二次元风格和复古像素艺术设计。该项目融合了现代AI图像生成技术与16-bit游戏美学,…...
OpenClaw浏览器扩展:Kimi-VL-A3B-Thinking网页图文即时分析工具
OpenClaw浏览器扩展:Kimi-VL-A3B-Thinking网页图文即时分析工具 1. 为什么需要浏览器增强工具 作为一个经常需要从网页获取信息的技术写作者,我长期被两个问题困扰:一是网页内容过于冗长,需要手动筛选关键信息;二是遇…...
单例模式全解析:5种写法 + 破坏与防护
文章目录什么是单例模式?实现方式饿汉式懒汉式方式一(线程不安全)方式二(同步方法)方式三(双重检查锁 DCL)枚举什么是单例模式? 保证一个类在全局只有一个实例,并提供一个全局访问点。 适用场…...
PyTorch实战:如何用潜在扩散模型生成高清图像(附DDPM/DDIM/PLMS对比)
PyTorch实战:潜在扩散模型采样方法全面评测与优化指南 1. 潜在扩散模型核心架构解析 潜在扩散模型(Latent Diffusion Models, LDM)已成为当前生成式AI领域最具突破性的技术之一。与直接在像素空间操作的扩散模型不同,LDM通过变分自…...
