ES6: 模板字符串和箭头函数的基本使用

news2024/12/22 17:22:14

前言

本文主要介绍了ES6中模板字符串和箭头函数的基本使用

一、模板字符串

1、基本介绍

  • 由反引号``(在键盘Esc键的下面)圈住的字符串即模板字符串
  • 举例:
//普通字符串
const name='hello'
console.log(name)

//模板字符串
const name1=`world`
console.log(name1)

结果:
在这里插入图片描述

2、模板字符串和一般字符串的区别

  • 代码1:一般字符串的使用
    使用一般字符串时,对字符串进行拼接时需要用到加号+
<script>
	const person={
		name:'June',
		age:18,
		sex:'male'
	};

	const info='我的名字是'+person.name+',性别:'+person.age;
	console.log(info)
 
</script>

结果:
在这里插入图片描述

  • 代码2:模板字符串的使用
    使用模板字符串时,使用${}来注入模板字符串
<script>
	const person={
		name:'June',
		age:18,
		sex:'male'
	};

	const info= `我的名字是:${person.name},性别:${person.sex}`;
	console.log(info)
</script>

结果:
在这里插入图片描述

3、模板字符串的注意事项

  • 模板字符串中,所有的空格、换行或缩进都会被保留在输出之中
    (1)普通字符串
    通过转义字符来实现换行
<script>
	const info='第一行\n第二行'
	console.log(info)

</script>

结果:
在这里插入图片描述

(2)模板字符串
方法一:通过转义字符来实现换行

<script>
	const info=`第一行\n第二行`
	console.log(info)
</script>

结果:
在这里插入图片描述
方法二:通过换行实现换行效果
模板字符串中,可以通过直接换行来实现上述效果,不过所有的空格、换行或缩进都会被保留在输出之中

<script>
	const info=`第一行
	第二行`
	console.log(info)

</script>

结果:
在这里插入图片描述
如果输出结果不想有空格,挪动一下要换行的文字内容:
在这里插入图片描述
结果:
在这里插入图片描述

  • 输出 ` 和 \ 等特殊字符串
    使用转义字符反斜杠对字符串进行转义,比如:
    在这里插入图片描述

结果:
在这里插入图片描述

  • 模板字符串的注入
    (1)通过${}来实现对模板字符串的注入
    (2)只要最终可以得出一个值的就可以通过${}注入到模板字符串中

举例

<script>
	const username="June"
	const person ={ 
		age: 18, 
		sex: 'male' ,

	};

	const getSex = function (sex) {
		return sex === 'male' ?'男':'女';
	}

	const info = `${username}, ${person.age + 2}, ${getSex( person.sex)}`;
	console.log (info);

</script>

结果:
在这里插入图片描述

二、箭头函数

1、基本介绍

  • 箭头函数的结构:
    const/let 函数名 = (参数)=>{函数体}
  • 举例:
const add =(x,y)=>{
	return x+y;
};
console.log(add(2,2));

分析:
首先,参数和函数体之间由箭头=>连接;由于构成的函数是匿名函数,因此无法直接给箭头函数起名字,得将其赋给一个变量或者常量,变量名或常量名即函数名;接着就可以在其他地方通过调用函数名来调用函数了。

2、注意事项

  • 单个参数可以省略圆括号
    比如:
const add = x=>{
	return x+1;
};
console.log(add(2));
  • 无参数或者多个参数不能省略圆括号
    比如:
const add = ()=>{
	return 1+1;
};
console.log(add());
  • 单行函数体可以同时省略{}和return
constadd=(x,y)=>x+y;
console.log(add(1, 1));
  • 如果箭头函数返回单行对象,可以在{}外面加上(),让浏览器不再认为那是函数体的花括号,而是对象的花括号
const add = (x,y) => ({
	value:x + y

});
console.log add((1, 1));

结果:
在这里插入图片描述

3、非箭头函数的this指向

(1)全局作用域中的this指向window

console.log(this); // window

结果:
在这里插入图片描述

(2)一般函数中的this指向

  • 只有在函数调用的时候,this指向才确定;不调用的时候,不知道this指向谁
  • this指向和函数在哪儿调用没关系,只和谁在调用有关
function add(){
	console.log(this);
}  
add();

结果:
在这里插入图片描述

4、箭头函数的this指向

  • 箭头函数的this指向由它所在的作用域决定,而不是由函数的调用方式决定。箭头函数没有自己的this,它会捕获外部环境的this作为自己的this。所以,在箭头函数内部,this指向的是外部环境的this,而不是函数自身的this。
  • 举例
const obj = {
  num: 10,
  fn: function() {
    setTimeout(() => {
      console.log(this.num);
    }, 1000);
  }
};

obj.fn(); // 输出10

分析:
在这个例子中,箭头函数作为setTimeout的回调函数,在调用时使用了外部环境obj的this,所以this指向obj,输出了10。如果改用普通的函数声明,则this指向setTimeout函数本身,无法访问obj对象中的num属性。

  • 不适合箭头函数的场景

(1)作为构造函数
如果使用箭头函数来作为构造函数,当实例化构造函数的时候会报错。因为箭头函数没有this,而构造函数有,当实例化构造函数的时候,里面的this会指向

(2)需要this指向调用对象的时候
箭头函数没有自己的 this,它会使用其父作用域中的 this 值,从而出现一些意外的行为。

(3)需要使用arguments的时候

当需要在函数内部使用arguments关键字时,箭头函数也不适用。箭头函数没有自己的arguments对象,所以不能在内部使用它。

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

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

相关文章

前端js实现将数组某一项符合条件的对象,放到首位

哈喽 大家好啊 在日常前端开发需求中&#xff0c;总是会遇到开发数组&#xff0c;将某一项对象值&#xff0c;放到首位&#xff0c;让用户更好的去选择&#xff0c;比如省会城市优先等 我做的案例是需要将地区中的四川放到首位 以下是我的代码&#xff1a; 简单说明下思路&a…

蓝桥杯单片机PCF8591芯片ADC与DAC运行冲突解决

单片机型号&#xff1a;STC15F2K60S2 目录 文章附上工程下载地址&#xff1a; 在进行ADC与DAC测试时发现了如下冲突&#xff1a; 实验问题发现&#xff1a; 解决方案&#xff1a; 文章附上工程下载地址&#xff1a; https://download.csdn.net/download/qq_64257614/87854…

OpenWrt 安装“Alist 文件列表”挂载云盘

警告天翼云盘上传受限每天只有2GB 警告天翼云盘上传受限每天只有2GB 警告天翼云盘上传受限每天只有2GB 前言&#xff08;背景故事&#xff0c;没有干货&#xff09; 此前一直在用“阿里云盘-WebDAV”&#xff0c;用起来也挺好非常的方便&#xff0c;直到最近接触到“天翼云盘…

动态调整xxl_job下次执行时间

项目场景&#xff1a; 目前项目引入了 xxl-job 来跑定时任务&#xff0c;但是存在一个问题&#xff0c;项目执行结束的时间不固定&#xff0c;有峰值&#xff0c;在高峰期的时候会出现长阻塞一直排队等待&#xff0c;如图&#xff1a; 问题描述 需要做一种策略来解决长阻塞问…

区块链理财源码【互联网畜牧业养牛平台】带积分商城+抽奖+会员特权【亲测】

源码简介&#xff1a; 互联网畜牧业的养牛平台&#xff0c;非常火的区块链农业应用&#xff0c;是养殖业元宇宙的一种理财商业模式&#xff0c;农业类的其实都可以借鉴这种思路。当然了&#xff0c;玩法比较多样&#xff0c;不要做违法的事情就行。 代码已经简单亲测了一下&a…

linuxOPS基础_linux文本文件查看及统计

vi/vim vim文档编辑操作太多了,可以看这篇单独介绍vim的文章>https://blog.csdn.net/weixin_44368963/article/details/130963920 cat查看文件 命令&#xff1a;cat 作用&#xff1a;查看文件内容 语法&#xff1a;#cat 文件名称 ​ #cat 文件1 文件2 > 文件3 **特别注…

docker入门(1)----服务/镜像/容器/数据卷相关命令

安装 官网安装app命令行安装&#xff08;但是没有图形界面app&#xff09;brew install docker 架构 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像ubuntu:16.04 就包含了…

chatgpt赋能python:Python内置排序:快速高效的数据处理方式

Python内置排序&#xff1a;快速高效的数据处理方式 作为一种非常流行的编程语言&#xff0c;Python提供了很多高效、易于使用的内置功能&#xff0c;其中之一就是排序函数。通过使用内置的排序函数&#xff0c;Python工程师可以快速高效地处理各种不同类型的数据&#xff0c;…

什么是DAS/SAN/NAS

先上图 DAS DAS(Direct-attached Storage) 直连存储&#xff0c;这种存储设备通常是一个磁盘阵列柜&#xff0c;里面有多块磁盘&#xff0c;但不带RAID功能。 它与服务器主机之间的连接通常采用SCSI或者FC连接。DAS只能连接一台服务器&#xff0c;其它服务器无法共享该存储。 …

Redisson

文章目录 Redisson背景简介使用引入依赖配置类源代码 Redisson 背景 基于Redis(setnx)实现的分布式锁存在以下几个问题&#xff1a; 不可重入&#xff1a;同一个线程无法多次获取同一把锁 不可重试&#xff1a;获取锁只尝试一次就返回false&#xff0c;没有重试机制 超时释…

云服务器+minio+PicGo+Typora搭建个人图床实现typora鼠标右击上传图片。

搭建图床 服务器配置docker安装minio安装配置docker安装minio配置minio picgo配置下载picgopicgo配置去插件市场下载&#xff0c;minio配置 typora配置安装破解设置上传服务 服务器配置 本人用的是阿里云的轻量型云服务器&#xff0c;centos7.6&#xff0c;没有服务器的可以自…

让文物“活”起来,火山引擎视频云三维重建技术揭秘

动手点关注 干货不迷路 中国历史悠久&#xff0c;文化底蕴深厚&#xff0c;文物数目众多&#xff0c;文物作为前人智慧的结晶&#xff0c;其文献价值不言而喻。古籍是记录中华文明的重要载体&#xff0c;也是流传至今的宝贵文化遗产&#xff0c;文物保护也是一项长期重要的基础…

OpenAI最新研究Let's verify step-by-step,过程胜于结果!

深度学习自然语言处理 原创作者&#xff1a;Winni OpenAI最新研究 <Let’s verify step-by-step> 于昨天发布&#xff0c;引起了广泛关注。这个想法非常简单&#xff0c;可以用一句话来概括&#xff1a; 对于复杂的逐步推理问题&#xff0c;我们在每个步骤都给予奖励&…

用GANs来做数据增强

适用于只有很少样本的情况。 即使是不完美的合成数据也可以提高分类器的性能。 生成对抗网络(Generative adversarial networks&#xff0c;简称GANs)由Ian Goodfellow于2014年推出&#xff0c;近年来成为机器学习研究中非常活跃的话题。GAN是一种无监督生成模型&#xff0c;它…

光栅尺磁栅尺编码器AB信号输入4倍频脉冲计数器,Modbus RTU模块

IBF153远程I/O模块&#xff0c;可以用来测量1路光栅尺磁栅尺编码器信号。 信号输入 1路光栅尺磁栅尺编码器信号输入&#xff0c;可接NPN和PNP信号&#xff0c;通过命令设置输入类型。 通讯协议 通讯接口&#xff1a; 1路标准的RS-485通讯接口。 通讯协议&#xff1a;支持两…

一篇文章搞定《Android嵌套滑动》

一篇文章搞定《Android嵌套滑动》 前言嵌套滑动冲突种类产生原因1、外部与内部滑动方向不一致2、外部与内部滑动方向一致3、多种情况下的嵌套&#xff08;电商首页&#xff09; 解决嵌套滑动的方法1、外部拦截法2、内部拦截法3、现有API框架 外部与内部滑动方向不一致1、ViewPa…

MySQL第三章、表的增删查改

目录 一、CRUD 二、新增&#xff08;Create&#xff09; 2.1单行数据 全列插入 ​2.2多行数据 指定列插入 ​编辑 三、查询&#xff08;Retrieve&#xff09; ​3.1全列查询 3.2指定列查询 3.3 查询字段为表达式 3.4 别名 3.5 去重&#xff1a;DISTINCT 3.6 排序…

docker-compose安装 rocketmq server、dashboard

目录 目录结构 nameserver安装 broker安装 控制台安装 测试效果 rocket分为3个服务&#xff1a;nameserver、broker、dashboard 这边我计划分开安装&#xff1a; 安装版本为4.5.0 目录结构 规划的结构 命令 mkdir -p /apps/rocketmq/namesrv/{config,data,logs} mkdir…

自动化测试-终章

自动化测试-终章 前沿 如果想做不需要人去点击使用程序做到真正的自动化测试思想,以下是我的思想,需要跟着我的思路来,我们做一个可以测试所有页面的增删改查功能是否好使 思想一 我使用的是Java 做自动化测试,我们现做一个简单的自动化 pom 需要引入 selenium-java 然后需…

Qt中的窗口类及其特点

目录 常用的窗口类 窗口的显示内嵌窗口 QWidget内嵌窗口演示 QWidget不内嵌窗口演示 QDialog类型的窗口特点 QMainWindows窗口的特点 总结 常用的窗口类 常用的窗口类有 3 个 在创建 Qt 窗口的时候&#xff0c;需要让自己的窗口类继承上述三个窗口类的其中一个QWidget 所有…