ES6之箭头函数

news/2024/10/21 5:32:48/

文章目录

  • 前言
  • 一、定义
  • 二、简化
    • 1.当函数参数只有一个时
    • 2.当函数体只有一条return语句时
  • 三、注意
    • 1.箭头函数的this
    • 2.不能作为构造函数实例化对象
    • 3.不能使用argument变量
  • 总结


前言

简单的讲,箭头函数是将原function关键字和函数名删掉的一种简写函数形式。


一、定义

通常函数的定义是:

	fuction 函数名(参数){//函数体}//例如function fn1(a,b){return a+b;}var fn2=function(a,b){return a+b;}

箭头函数定义如下:

	(a,b)=>{return a+b}//或var fn1()=(a,b)=>{return a+b}

二、简化

1.当函数参数只有一个时

这时括号可以省略,但是没有参数时,括号不能省略。

	var fn1=()=>{};//无参数var fn2=a=>{};//单个参数var fn3=(a,b)=>{};//多个参数varr fn4=(a,b,...args)=>{};//多变参数

2.当函数体只有一条return语句时

这时可以省略{}和return关键字,但函数体包含多条语句时候,不能省略{}和return关键字。

	()=>'hello';//返回'hello'字符串(a,b)=>a+b;//返回a+b的和(a)=>{a=a+11return a//多条语句}

三、注意

1.箭头函数的this

箭头函数中的this是静态的,始终指向函数声明时所在作用域下的this值。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>function getAge1() {console.log(this.age);}let getAge2 = () => {console.log(this.age);}window.age = 20;//设置window属性ageconst school = {age: 18}//直接调用console.log("直接调用");getAge1();getAge2();//使用call改变this指向调用console.log("使用call改变this指向调用");getAge1.call(school);getAge2.call(school);</script>
</body></html>

在这里插入图片描述
上述两个函数直接调用时,this均指向的是window作用域下的age,但使用call改变this指向school作用域下的age,发现箭头函数并未改变指向,正如上诉所说它的this是静态的,始终指向函数声明时所在作用域下的this值。

2.不能作为构造函数实例化对象

	let People = (name, age) => {this.name = name;this.age = age;}let p = new People('王五', 20);

会报错

3.不能使用argument变量

	let fn = () => {console.log(arguments);}fn(1, 2, 3);

报错

总结

以上就是箭头函数的介绍,但是大家一定要注意箭头函数的实际运用,比如箭头函数与解构赋值结合,箭头函数与数组方法回调结合等。(与数组方法回调结合我会在后面ES6的常见数组新增方法中讲解)


http://www.ppmy.cn/news/61354.html

相关文章

JSP基于Iptables图形管理工具的设计与实现(源代码+论文)

Netfilter/Iptables防火墙是Linux平台下的包过滤防火墙&#xff0c;Iptables防火墙不仅提供了强大的数据包过滤能力&#xff0c;而且还提供转发&#xff0c;NAT映射等功能&#xff0c;是个人及企业级Linux用户构建网络安全平台的首选工具。但是&#xff0c;由于种种原因&#x…

【fluent】axial、radial、tangentia的含义和区别,axial/radial/tangentia coordination表达的意义

Reference 本文主要参考fluent的官方文档。 ANSYS FLUENT 12.0 User’s Guide - 31.2 Velocity Reporting Options 笛卡尔坐标系——Cartesian coordinate system 不管什么坐标系&#xff0c;都要讲究维数。这个维数根据问题难度确定&#xff0c;对于3D问题需要用三维坐…

大模型商业的搅局者?除了谷歌和微软,你可能忘记了它!

夕小瑶科技说 原创 作者 | 小戏、iven 大模型的商业大戏愈发精彩了&#xff0c;这边是谷歌和 OpenAI 剑拔弩张军备竞赛&#xff0c;那边是各路豪强的大模型应用雪花般的涌来&#xff0c;你方唱罢我登场。 而在这串作为大模型先行者而出现的公司以及研究院的名字中&#xff0c;…

MySQL5.7和MySQL8.0的区别是什么

MySQL5.7和MySQL8.0的区别是什么 1.MySQL5.7和MySQL8的区别&#xff1f; MySQL 5.7和MySQL 8.0之间有以下几个主要区别&#xff1a; 版本功能区别&#xff1a;MySQL 5.7版本已经是一个非常稳定的成熟的版本&#xff0c;主要是针对5.7以下的版本进行常规的bug修复和性能优化&a…

视频里的音乐怎么转换成mp3格式?

视频里的音乐怎么转换成mp3格式&#xff1f;视频里的音乐转换为mp3的原因有很多&#xff0c;主要是因为mp3格式是一种音频格式&#xff0c;文件大小较小&#xff0c;更易于存储和传输。相比之下&#xff0c;视频格式则是一种视频文件格式&#xff0c;虽然包含音频&#xff0c;但…

springboot+vue心灵治愈交流平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的心灵治愈交流平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

【二叉搜索树】

1 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树 &#xff0c;或者是具有以下性质的二叉树 : 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值 它的左…

I2C工作流程

FM33A0XX的I2C接口只用作主机&#xff0c;且不支持多主机&#xff0c;因此挂在总线上的其他设备都是从机。总线上总是由主机提供同步时钟SCL&#xff0c;SDA数据流方向可以是主机发送从机接收&#xff0c;或者从机发送主机接收。 数据发送流程 1、主机发起 START 时序 2、主机…