【前端每日基础】day23——箭头函数

2024-05-28 01:20

本文主要是介绍【前端每日基础】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——箭头函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009141

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

pandas使用apply函数给表格同时添加多列

《pandas使用apply函数给表格同时添加多列》本文介绍了利用Pandas的apply函数在DataFrame中同时添加多列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、Pandas使用apply函数给表格同时添加多列二、应用示例一、Pandas使用apply函

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

Python中Namespace()函数详解

《Python中Namespace()函数详解》Namespace是argparse模块提供的一个类,用于创建命名空间对象,它允许通过点操作符访问数据,比字典更易读,在深度学习项目中常用于加载配置、命... 目录1. 为什么使用 Namespace?2. Namespace 的本质是什么?3. Namesp

JavaScript装饰器从基础到实战教程

《JavaScript装饰器从基础到实战教程》装饰器是js中一种声明式语法特性,用于在不修改原始代码的情况下,动态扩展类、方法、属性或参数的行为,本文将从基础概念入手,逐步讲解装饰器的类型、用法、进阶... 目录一、装饰器基础概念1.1 什么是装饰器?1.2 装饰器的语法1.3 装饰器的执行时机二、装饰器的

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

MySQL中如何求平均值常见实例(AVG函数详解)

《MySQL中如何求平均值常见实例(AVG函数详解)》MySQLavg()是一个聚合函数,用于返回各种记录中表达式的平均值,:本文主要介绍MySQL中用AVG函数如何求平均值的相关资料,文中通过代... 目录前言一、基本语法二、示例讲解1. 计算全表平均分2. 计算某门课程的平均分(例如:Math)三、结合