【ES6】—【必备知识】—箭头函数

news2024/12/26 1:44:43

在这里插入图片描述

一、定义函数

1. ES5

1. 普通函数预定义,再调用

console.log(sum(1, 2))
function sum (x, y) {
	return x + y
}
console.log(sum(1, 2))

2. 函数表达式 按代码顺序定义

console.log(sum(1, 2))
// sum is not a function
// sum不是一个函数
var sum = function (x, y) {
	return x + y
}

2. ES6

1. 箭头函数

// 箭头的左边是参数,右边是函数体
let sum = (x, y) => {
	return x + y
}
console.log(sum(3,4))

2. 简写

PS:当函数体中只有一行代码,可以简写成如下

let sum = (x,y) => x + y
console.log(sum(4,5))

极度简写

let x = x => x
=> 
let x = function(x) { return x }

二、箭头函数

1. 箭头函数this指向定义时所在的对象,而不是调用时所在的对象

  1. this表示当前对象的引用
<!DOCTYPE html>
<html lang="en">
<body>
<button id="btn">测试</button>
<script>
  let oBtn = document.querySelector('#btn')
  oBtn.addEventListener('click', function() {
    console.log(this)
    // 点击,打印<button id="btn">测试</button>
  })
</script>
</body>
</html>
  1. this的指向的变化
<!DOCTYPE html>
<html lang="en">
<body>
<button id="btn">测试</button>
<script>
  let oBtn = document.querySelector('#btn')
  oBtn.addEventListener('click', function() {
  	setTimeout(function () {
  		console.log(this)
  		// 点击,1秒后,打印 window 对象
  		// window.setTimeout = setTimeout, this指向的是当前对象的引用, 所以 this = window
  	},1000)
  })
</script>
</body>
</html>
  1. 改变this指向
<!DOCTYPE html>
<html lang="en">
<body>
<button id="btn">测试</button>
<script>
  let oBtn = document.querySelector('#btn')
  oBtn.addEventListener('click', function() {
  	setTimeout(function () {
  		// 手动改变this指向, call, apply, bind
  		console.log(this)
  		// <button id="btn">测试</button>
  		// 把click的函数中this,当前this指向oBtn, 当做参数传递定时器函数内部
  	}.bind(this),1000)
  })
</script>
</body>
</html>

PS: call,apply再定时器里面会立即执行,bind会等1秒后执行
4. 箭头函数改变this指向

<!DOCTYPE html>
<html lang="en">
<body>
<button id="btn">测试</button>
<script>
  let oBtn = document.querySelector('#btn')
  oBtn.addEventListener('click', function() {
  	setTimeout(() => {
  		console.log(this)
  		// <button id="btn">测试</button>
  		// 继承click函数中this
  	},1000)
  })
</script>
</body>
</html>

PS:箭头函数里面没有this, 其中this继承了外层的执行上下文中的this

2.不可以当做构造函数

  1. ES5 中构造函数
// 类
function People(name, age) {
	console.log(this)
	// 指向的是实例化的对象
	this.name = name
	this.age = age
}
let p1 = new People('xiaoxiao', 30)
console.log(p1)
  1. 通过箭头函数替换构造函数
// 类
let People = (name, age) => {
	console.log(this)
	// 指向的是实例化的对象
	this.name = name
	this.age = age
}
let p1 = new People('xiaoxiao', 30)
console.log(p1)
// People is not a constructor
// People 不是一个构造器

3.不可以使用arguments对象

  1. 不能使用arguments对象
let foo = () => {
	console.log(arguments)
}
foo(1,2,3)
// arguments is not defined
// arguments 未定义
  1. 使用rest参数代替arguments对象
let foo = (...arg) => {
	console.log(arg)
}
foo(1,2,3)
// (3) [1, 2, 3]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/916653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux常会用到的命令

查看gpu上运行的进程&#xff1a; nvidia-smi 查看进程的完整信息 ps -f -p 进程号 搜索含有指定字符的进程信息&#xff0c;如radar ps -ef|grep radar 复制文件时排除某个文件夹&#xff0c;如从源路径中排除data rsync -av --excludedata/ 源路径 目标路径查看磁盘占用…

<kernel>kernel 6.4 USB-之-hub_port_init()分析

&#xff1c;kernel&#xff1e;kernel 6.4 USB-之-hub_port_init()分析 kernel 6.4 USB系列文章如下&#xff1a; &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-hub_event()分析 &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-port_event()分析 &#xff1c;kernel&…

快速搭建 Linux 学习平台

最近换了一个新的笔记本电脑&#xff0c;原来的学习环境没了&#xff0c;所以就重新搭建一下&#xff0c;顺便把这个过程给记录下来&#xff0c;希望可以帮助有需要的人。一个学习环境最主要的目的是简化学习需要准备的时间&#xff0c;不需要花费太多的时间在哪些不必要的细枝…

【ownCloud】添加信任域

在我进行使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘后 我的虚拟机更改了ip地址导致出现下列状况 报错&#xff1a;您正在访问来自不信任域名的服务器。 please contact your administrator. if you are an administrator of this instance, configure the &q…

重叠率控制(算法详细介绍含SCL和梯形图源代码)

产品包装和线缆保护材料的包覆都需要进行材料包装重叠率的控制,这篇博客和大家详细介绍重叠率控制算法。阅读本篇博客之前大家需要对比例随动运动控制系统以及收卷排线控制有所了解,这样大家会更容易理解包材重叠率控制,相关文章链接如下: 运动控制比例随动系统_正运动随动…

JavaScript 闭包是什么:最佳实践指南

闭包是指在一个函数内部创建另一个函数&#xff0c;并且内部函数可以访问外部函数的变量、参数以及其他内部函数&#xff0c;即使外部函数已经执行完毕。这种机制使得内部函数保留了对外部作用域的引用&#xff0c;即使外部作用域已经不再活跃。 为什么闭包重要&#xff1f; 闭…

CTFhub-sqli注入-Referer注入

在最后添加 Referer: (注意 R 大写&#xff0c; Referer后面是 &#xff1a;&#xff0c;Content-Length: 与 Referer: 之间没有空行) 1 2 3 1 union select 1,database() -1 union select 1,database() -1 union select 1,group_concat(table_name)from information_sche…

【Java 高阶】一文精通 Spring MVC - 转发重定向(四)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

框架分析(3)-Vue.js

框架分析&#xff08;3&#xff09;-Vue.js 专栏介绍Vue.js核心特点响应式数据绑定组件化开发虚拟DOM模板语法插件系统 对比总结优缺点优点简单易学响应式数据绑定组件化开发虚拟DOM生态系统和社区支持 缺点生态系统相对较小文档和教程相对较少适用于中小型项目 专栏介绍 link…

Skywalking Kafka Tracing实现

背景 Skywalking默认场景下&#xff0c;Tracing对于消息队列的发送场景&#xff0c;无法将TraceId传递到下游消费者&#xff0c;但对于微服务场景下&#xff0c;是有大量消息队列的业务场景的&#xff0c;这显然无法满足业务预期。 解决方案 Skywalking的官方社区中&#xf…

Linux内核学习(七)—— 定时器和时间管理(基于Linux 2.6内核)

目录 一、内核中的时间概念 二、节拍率&#xff1a;HZ 实时时钟 系统定时器 三、定时器 系统定时器是一种可编程硬件芯片&#xff0c;能以固定频率产生定时器中断&#xff0c;它所对应的中断处理程序负责更新系统时间&#xff0c;也负责执行需要周期性运行的任务。 一、内…

python中的matplotlib画直方图(数据分析与可视化)

python中的matplotlib画直方图&#xff08;数据分析与可视化&#xff09; import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.set_option("max_columns",None) plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]Fa…

fastdeploy部署多线程/进程paddle ocr(python flask框架 )

部署参考&#xff1a;https://github.com/PaddlePaddle/FastDeploy/blob/develop/tutorials/multi_thread/python/pipeline/README_CN.md 安装 cpu&#xff1a; pip install fastdeploy-python gpu &#xff1a;pip install fastdeploy-gpu-python #下载部署示例代码 git cl…

【python】jupyter notebook导出pdf和pdf不显示中文问题

文章目录 写在前面1. 使用jupyter notebook导出pdf1.1 安装Pandoc1.2 安装MiKTex1.3 示例导出pdf 2. 中文显示问题2.1 显示中文问题示例2.2 解决办法1&#xff1a;修改tex2.3 解决办法2&#xff1a;修改内置文件 写在前面 使用jupyter notebook导出pdf时&#xff0c;出现了一些…

java 项目运行时,后端控制台出现空指针异常---java.lang.NullPointerException

项目场景&#xff1a; 提示&#xff1a;这里简述项目背景&#xff1a; 场景如下&#xff1a; java 项目运行时&#xff0c;后端控制台出现如下图所示报错信息&#xff1a;— 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; java 项目运行时&#xff0c;后…

刷视频看到的联通流量卡广告,19元210G能买吗?

现在为了争夺客户资源&#xff0c;三大运营商纷纷发力&#xff0c;推出了各种优惠套餐&#xff0c;就比如&#xff1a;前段时间电信推出29元155G长期套餐&#xff0c;移动29元135G本地套餐&#xff0c;广电19元192G套餐。 当然&#xff0c;联通也是不甘示弱&#xff0c;也跟上…

2023年国赛 高教社杯数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

Ubuntu系统安装之后首需要做的事情

Ubuntu系统的初步环境搭建 1、换源2、显卡3、浏览器4、输入法5、终端6、ROS7、VSCode8、设置时间与win一致9、 TimeShift10、 Anaconda&#xff08;考虑装不装&#xff09; 1、换源 点开Software&&Update&#xff0c;找到Ubuntu Software中的Download from&#xff0c…

【OI赛题】汽水瓶

原题链接&#xff1a;https://www.dotcpp.com/oj/problem1072.html 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 不知道这题从何下手的小伙伴可以看看这篇文章的方法一&#xff1a;https://blog.csdn.net/m0_62531913/article/details/132385341?…

我分享的这5款好用的软件,你都用过吗?

​ 我经常在网上寻找一些好用的软件&#xff0c;并尝试使用它们&#xff0c;最后把我的心得和感受分享给大家。 浏览器——Firefox ​ Firefox是一款由Mozilla开发的自由开源的跨平台浏览器&#xff0c;以保护用户的隐私和安全而闻名。Firefox拥有快速的浏览速度&#xff0c;…