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

详细讲解ES6箭头函数语法(附Demo)

目录

  • 前言
  • 1. 传统函数
  • 2. 箭头函数
  • 3. 差异比较
  • 彩蛋

前言

讲述箭头函数之前,先了解传统函数的格式,方便做一个对比

1. 传统函数

  • 函数声明
function greet() {console.log("Hello!");
}
greet();
  • 函数表达式
const square = function(x) {return x * x;
};
console.log(square(5));
  • 匿名函数作为回调
const numbers = [1, 2, 3];
numbers.forEach(function(number) {console.log(number);
});
  • 使用 function 关键字声明的命名函数
function add(a, b) {return a + b;
}
console.log(add(3, 4));

使用了传统的 function 关键字来声明函数

函数声明和函数表达式都是 JavaScript 中定义函数的常见方式

  • 函数声明:通过 function 关键字和函数名来声明函数
  • 函数表达式:通过 constlet 关键字将函数赋值给一个变量或常量

传统函数语法与箭头函数相比更为冗长,在一些情况下,箭头函数的简洁性和清晰性更受欢迎
但传统函数语法在 ES6 之前一直是 JavaScript 中定义函数的主要方式

2. 箭头函数

ES6 引入了箭头函数语法,提供了一种更简洁的方式来定义函数

箭头函数通常用于匿名函数回调函数中,可以更清晰地表达函数的意图,并且具有词法作用域绑定的特性

  • 无参数剪头参数
const func1 = () => {// 函数体
};
  • 单个参数箭头函数
const func2 = (param) => {// 函数体
};
  • 多个参数箭头函数
const func3 = (param1, param2) => {// 函数体
};
  • 简写形式(当函数体只有一条语句时,可以省略大括号和return关键字):
const func4 = (param) => param * 2;

下面是整体的示例:

// 无参数箭头函数
const greet = () => {console.log("Hello!");
};
greet();// 单个参数箭头函数
const square = (x) => {return x * x;
};
console.log(square(5));// 多个参数箭头函数
const add = (a, b) => {return a + b;
};
console.log(add(3, 4));// 简写形式
const double = (num) => num * 2;
console.log(double(10));

展示了箭头函数的不同用法,包括无参数函数、单个参数函数、多个参数函数以及简写形式

箭头函数通常在需要简洁清晰地定义函数时非常有用

3. 差异比较

单个输出的看,可能感悟不是很深,如果两者放在一起,还是可以看到明显的差异:

// 传统函数示例
function greetTraditional() {return "Hello!";
}// 箭头函数示例
const greetArrow = () => {return "Hello!";
}// 传统函数表达式示例
const squareTraditional = function(x) {return x * x;
};// 箭头函数表达式示例
const squareArrow = (x) => {return x * x;
};// 匿名函数作为回调 - 传统函数
const numbers = [1, 2, 3];
numbers.forEach(function(number) {console.log(number);
});// 匿名函数作为回调 - 箭头函数
numbers.forEach((number) => {console.log(number);
});// 使用 function 关键字声明的命名函数
function addTraditional(a, b) {return a + b;
}// 使用箭头函数声明的命名函数
const addArrow = (a, b) => {return a + b;
};// 简写形式示例
const doubleTraditional = function(num) {return num * 2;
};const doubleArrow = (num) => num * 2;// 输出结果
console.log(greetTraditional()); // Hello!
console.log(greetArrow()); // Hello!console.log(squareTraditional(5)); // 25
console.log(squareArrow(5)); // 25console.log(addTraditional(3, 4)); // 7
console.log(addArrow(3, 4)); // 7console.log(doubleTraditional(10)); // 20
console.log(doubleArrow(10)); // 20

彩蛋

对于实战中应用的场景还是很多的

类似后端方法的传参:

import request from '@/router/axios';export const getList = (current, size, params) => {return request({url: '/api/manong/region/list',method: 'get',params: {...params,current,size,}})
}export const getLazyTree = (parentCode, params) => {return request({url: '/api/manong/region/lazy-tree',method: 'get',params: {...params,parentCode}})
}export const remove = (id) => {return request({url: '/api/manong/region/remove',method: 'post',params: {id,}})
}export const submit = (row) => {return request({url: '/api/manong/region/submit',method: 'post',data: row})
}

截图如下:

在这里插入图片描述

相关文章:

  • 中科大计网学习记录笔记(八):FTP | EMail
  • JCIM | MD揭示PTP1B磷酸酶激活RtcB连接酶的机制
  • 鸿蒙harmony--TypeScript函数详解
  • 【EAI 016】VIMA: General Robot Manipulation with Multimodal Prompts
  • web 前端实现一个根据域名的判断 来显示不同的logo 和不同的标题
  • 没更新的日子也在努力呀,布局2024!
  • MOCO动量编码
  • Day31 贪心算法part01
  • PgSQL内核特性 - push-based pipeline 执行引擎
  • redis:七、集群方案(主从复制、哨兵模式、分片集群)和面试模板
  • 3.3 Binance_interface APP U本位合约行情-实时行情
  • Fink CDC数据同步(四)Mysql数据同步到Kafka
  • python+flask+django农产品供销展销电子商务系统lkw43
  • C++引用(内含和指针的对比)
  • Ubuntu22.04安装黑屏(进入U盘安装引导时 和 安装完成后)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 3.7、@ResponseBody 和 @RestController
  • ES6 ...操作符
  • Facebook AccountKit 接入的坑点
  • JavaScript HTML DOM
  • js中forEach回调同异步问题
  • mysql_config not found
  • Selenium实战教程系列(二)---元素定位
  • Yeoman_Bower_Grunt
  • 从零开始的无人驾驶 1
  • 从伪并行的 Python 多线程说起
  • - 概述 - 《设计模式(极简c++版)》
  • 近期前端发展计划
  • 小程序开发之路(一)
  • 以太坊客户端Geth命令参数详解
  • 原生Ajax
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​如何防止网络攻击?
  • ​业务双活的数据切换思路设计(下)
  • ​一些不规范的GTID使用场景
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Java数据结构)ArrayList
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)Neo4j下载安装以及初次使用
  • (转)jQuery 基础
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • ./和../以及/和~之间的区别
  • .FileZilla的使用和主动模式被动模式介绍
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别