ES6(ECMAScript 6.0) 新特性

ES6 基本介绍

(1)ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准, 2015 年 6 月发布。

(2)ES6 设计目标:达到 JavaScript 语言可以用来编写复杂的大型程序,成为企业级开发语言

(3)ECMAScript 和 JavaScript 的关系:ECMAScript 是 JavaScript 的规范/规则,JavaScript 是 ECMAScript 的一种实现 

2 let 声明变量

2.1 应用实例-基本使用

需求: 演示 let 的基本使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>let基本使用</title><script type="text/javascript">// 使用let声明变量let name = "小王";//1. console.log("name=",name); 使用, 可以输出对象的完整信息//2. console.log("name=",name); 使用+, 表示字符串的拼接。// 如果name是一个对象,会输出object,而不会输出对象的完整信息console.log("name=",name);</script>
</head>
<body>
</body>
</html>

注意:可以使用F12 或者 Ctrl+Shift+j 进入开发者模式,就可以看到控制台(这里如果使用chrome浏览器控制台无输出,edge可以正常输出,目前未解决) 

2.2 注意事项和使用细节

(1)let 声明的变量有严格局部作用域

(2)let 只能声明一次, var 可以声明多次

(3)let 不存在变量提升, var 存在变量提升

(4)代码演示 : let_detail.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>let 使用注意事项和细节</title><script type="text/javascript">// let 细节1// (1) let 声明的变量, 在代码块中,则作用域在代码块中// (2) var声明的变量, 在代码块中,作用域没有限制{var name = "小王";let job = "java工程师";console.log("name=", name);console.log("job=", job);}console.log("name=", name);//console.log("job=", job);//job is not defined// let 细节2// 1. var 可以声明多次// 2. let 只能声明一次var num1 = 100;var num1 = 200;console.log(num1);let num2 = 600;//let num2 = 900;//Uncaught SyntaxError: redeclaration of let num2console.log(num2);// let 细节3// 1. let 不存在变量提升,如果使用了后面才声明的变量会报错。浏览器认为这个变量不存在// 2. var 存在变量提升,如果使用了后面才声明的变量不会报错,浏览器认为这个变量是存在的,// 但是没有值,会赋予一个初始值undefinedconsole.log("x=", x);//undefinedvar x = "tom";//can't access lexical declaration 'z'console.log("z=", z);let  z = "mary";</script>
</head>
<body></body>
</html>

3 const 声明常量/只读变量

3.1 应用实例 

需求: 演示 const 的基本使用

代码演示, 创建 const.html 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>const常量/只读变量的使用</title><script type="text/javascript">//const 基本使用/**1. 常量在定义时,需要赋值2. 常量赋值后不能修改*///常量const PI = 3.14;//PI = 3.1415926;//invalid assignment to const 'PI'console.log("PI=", PI)</script>
</head>
<body>
</body>
</html>

3.2 注意事项和使用细节

(1)常量在定义时,需要赋值

(2)常量赋值后不能修改

4 解构赋值

4.1 基本介绍

(1)解构就是取出数据,解构赋值是对赋值运算符的扩展

(2)是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值

(3)主要有两种形式: 数组解构和对象解构

4.2 应用实例-数组解构

需求: 演示 ES6 数组解构用法

代码演示, 创建 arr_resolve.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>数组解构赋值</title><script type="text/javascript">let arr = [1, 2, 3];//如果要看某个变量的类型console.log("arr=>", arr);//数组解构[取出元素]//1.传统let x = arr[0], y = arr[1], z = arr[2];console.log(x, y, z);console.log("==================================");//2. ES6风格let [a, b, c] = arr;console.log(a, b, c);let [num1, num2, num3] = [100, 200, 300];console.log(num1, num2, num3);</script>
</head>
<body>
</body>
</html>

4.3 应用实例-对象解构

 需求: 演示 ES6 对象解构用法

代码演示, 创建 object_resolve.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>对象解构</title><script type="text/javascript">//对象解构/*** let monster = {name: '牛魔王', age: 800}* 细节说明* 1. 对象解构时,let{name, age} 中的 name 和 age 名称需要和对象属性名保持一致* 2. 也可解构对象部分属性,比如 let{age} 这样就只取出age 属性* 3. 还有其它的形式,比如方法上使用对象解构*///monster是一个对象let monster = {name: '牛魔王', age: 800};//传统方式取出属性-解构 对象名.属性名console.log(monster.name, " ", monster.age);//ES6对象解构//1. 把monster对象的属性, 赋值给{name,age}//2. {name,age} 的取名name 和 age 要和monster对象的属性名保持一致//3. 使用{} 包括, 不要使用[]//4. {name,age} 顺序是无所谓let {name, age} = monster;console.log("========================");console.log("name=", name, " age=", age);//下面这个写法也可以//let {name, age} = {name: '牛魔王', age: 800};//还有其它的形式,比如方法上使用对象解构//如果这样使用,仍然要保证名称和对象的属性名一致function f1({name, age}) {console.log("f1-name=", name, " ", "f1-age=", age)}f1(monster);</script>
</head>
<body></body>
</html>

模板字符串

5.1 基本介绍

(1)模板字符串使用反引号 `` 将字符串包裹

(2)可作为普通字符串

(3)可用来定义多行字符串,即可以将换行字符串原生输出

(4)字符串插入变量和表达式, 使用 ${}

(5)字符串中可以调用函数 

5.2 应用实例

需求: 演示模板字符串用法

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>模板字符串的使用</title><script type="text/javascript">//1、字符串,换行会原生输出let str1 = `for(int i = 0;i < 10;i++){System.out.println("i="+i);}`;console.log("str1=", str1);//2. 字符串插入变量和表达式。变量名写在 ${} 中,${} 中可以放入 JavaScript 表达式。let name = "小王";//(1) 当解析 ${name}, 就找最近的name遍历, 进行替换//(2) 然后可以得到最后解析的字符串let str2 = `名字=${name}`;let str3 = `1+2=${1 + 2}`;let n1 = 80;let n2 = 20;let str4 = `${n1}+${n2}=${n1 + n2}`;console.log("str2=", str2);console.log("str3=", str3);console.log("str4=", str4);//3. 字符串中调用函数function sayHi(name) {return "hi " + name;}let name2 = "tom";let str5 = `sayHi() 返回的结果是=${sayHi('jack')}`;let str6 = `sayHi() 返回的结果是=${sayHi(name2)}`;console.log("str5=", str5);console.log("str6=", str6);</script>
</head>
<body></body>
</html>

控制台输出:

对象相关新特性

6.1 应用实例-声明对象简写

需求: 演示声明对象简写 

代码演示, 创建 object.html 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>声明对象的简写方式</title><script type="text/javascript">const age = 800;const name = "牛魔王";// 传统 声明/定义对象let monster = {name: name, age: age};// ES6 声明/定义对象//1. {name, age} : 表示对象的属性名是name和age//2. 属性name的值是从变量/常量 name来的let monster02 = {name, age};console.log("monster02=>", monster02);</script>
</head>
<body></body>
</html>

 控制台输出

6.2 应用实例-对象方法简写

 需求: 演示对象方法简写

代码演示, 创建 object_method.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>对象方法的简写形式</title><script type="text/javascript">// 传统-对象方法定义let monster = {name: "红孩儿",age: 100,sayHi: function () {console.log("信息: name=", this.name, " age=", this.age);}}monster.f10 = function () {console.log("哈哈");};monster.sayHi();monster.f10();// ES6-对象方法定义let monster2 = {name: "红孩儿~",age: 900,sayHi() {console.log("信息: name=", this.name, " age=", this.age);},f1() {console.log("f1()");}}monster2.sayHi();monster2.f1();</script>
</head>
<body></body>
</html>

 控制台输出

6.3 应用实例-对象拓展运算符

需求: 演示对象拓展运算符使用 ,对象深拷贝

代码演示, 创建 object_operator.html 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>对象运算符的扩展</title><script type="text/javascript">let cat = {name: "小花猫", age: 2};// 拷贝对象(深拷贝),深拷贝的意思拷贝的对象是独立的,不会对原先的对象有影响let cat2 = {...cat};cat2.name = "中花猫";console.log("cat=>", cat);//小花猫console.log("cat2=>", cat2);//中花猫// 合并对象[深拷贝]let monster = {name: "白骨精", age: 100};let car = {brand: "奔驰", price: 800000};let monster_car = {...monster, ...car}monster_car.name = "狐狸精";console.log("monster=>", monster);console.log("monster_car=>", monster_car);</script>
</head>
<body></body>
</html>

控制台输出

箭头函数

7.1 基本介绍

(1)箭头函数提供更加简洁的函数书写方式。

(2)基本语法是:(参数列表) => { 函数体 }

(3)箭头函数没有参数或有多个参数,要用 () 括起来,箭头函数只有一个参数, 可以省略()

(4)箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块

(5)函数体只有一行语句,并且需要返回结果时,可以省略 {}  和 return, 结果会自动返回

(6)箭头函数多用于匿名函数的定义 

7.2 应用实例1-箭头函数使用

需求: 演示箭头函数基本使用,箭头函数的简写,箭头函数作为变量传入另一个函数

代码演示, 创建 arrow_method.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>箭头函数的使用</title><script type="text/javascript">// 传统定义函数var f1 = function (n) {return n * 2}console.log("传统= " + f1(2))// ES6 , 箭头函数使用let f2 = (n) => {return n * 2;}console.log("f2() 结果= ", f2(100));//200//上面的es6 函数写法,还可以简化let f3 = n => n * 3;console.log("f3() 结果=", f3(100));//300//函数也可以传给一个变量=> 看看java基础匿名内部类function hi(f4) {console.log(f4(900));}hi((n) => {return n + 100});hi((n) => {return n - 100});</script>
</head>
<body>
</body>
</html>

 控制台输出

7.3 应用实例2-箭头函数使用 

需求: 演示箭头函数使用

代码演示, 创建 arrow_method02.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>箭头函数使用案例2</title><script type="text/javascript">// 传统var f1 = function (n, m) {var res = 0for (var i = n; i <= m; i++) {res += i}return res}console.log("传统= " + f1(1, 10))// ES6 , 箭头函数使用let f2 = (n, m) => {var res = 0for (var i = n; i <= m; i++) {res += i}return res};console.log("ES6= " + f2(1, 10));</script>
</head>
<body></body>
</html>

控制台输出

7.4 应用实例3-箭头函数+对象解构 

 需求: 演示箭头函数+解构使用

代码演示, 创建 arrow_method03.html 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>箭头函数+对象解构</title><script type="text/javascript">const monster = {name: "红孩儿",age: 1000,skill: ['红缨枪', '三位真火']}//要求:在方法形参取出monster对象的skill属性//传统方式function f1(monster) {console.log("skill=", monster.skill);}f1(monster);//箭头函数let f2 = ({skill}) => {console.log("skill=", skill);}//老韩解读//1. f2 传入对象 monster//2. f2形参是 {skill} , 所以es6的对象解构特性, 会把monster对象的 skill属性赋给//   skill//3. 对象解构的前提就是 {skill}的skill 和 monster的 skill属性是一致f2(monster);//箭头函数+解构, 注意有{}, skill 名称需要和对象属性名一致.let f3 = ({age, name, skill}) => {console.log("skill=", skill, " age=", age, " name=", name);}f3(monster);</script>
</head>
<body></body>
</html>

 控制台输出

7.5 注意事项和使用细节 

(1)箭头函数+对象解构, 注意参数是({属性名})

(2)({属性名}) 是由{} 包括的,属性名需要和对象属性名一致,使用到了对象解构

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

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

相关文章

每天一个项目管理概念之干系人

项目管理中的干系人是指那些能够影响项目结果或者受项目结果影响的个人、群体或组织。理解并妥善管理干系人对于项目的成功至关重要。干系人管理是项目管理中的一个关键组成部分&#xff0c;它涉及到识别干系人、分析他们的利益和影响力、制定适当的沟通策略以及管理他们的期望…

Python机器学习完整流程:从数据清洗到推理落地

目录 一、引言 二、数据清洗 数据加载与初步探索 缺失值处理 异常值处理 特征编码与转换 数据集划分 三、模型训练 四、模型文件生成 五、模型部署与推理落地 六、总结 一、引言 在当今数据驱动的时代&#xff0c;机器学习已成为解决复杂问题的有力工具。而…

预埋螺栓抗滑移系数检测 内六角螺栓扭矩系数检测

螺栓检测范围&#xff1a;螺栓&#xff0c;高强螺栓&#xff0c;地脚螺栓&#xff0c;不锈钢螺栓&#xff0c;六角头螺栓&#xff0c;管片螺栓&#xff0c;膨胀螺栓&#xff0c;化学螺栓&#xff0c;镀锌螺栓&#xff0c;植筋螺栓&#xff0c;普通螺栓&#xff0c;钢结构螺栓&a…

Golang免杀-编码加密-Xor(GG)

go语言环境搭建 Golang学习日志 ━━ 下载及安装_golang下载-CSDN博客 go run xxx.go go build xxx.go 首先,cs.msf生成比特流数据. 放入xor,py脚本中进行xor加密. xor.py def xor(shellcode, key):new_shellcode ""key_len len(key)# 对shellcode的每一位进行…

从零开始设计一款gpu from scratch

基于RISC-V核心从零开始打造一款GPU芯片是一项复杂且具有挑战性的任务&#xff0c;涉及到硬件设计、软件支持、性能优化等多个方面。以下是一个详细的步骤指南&#xff0c;帮助你从零开始设计并实现一个基于RISC-V核心的GPU芯片。 1. 定义需求和目标 1.1 应用场景 确定GPU的…

JAVA台球助教台球教练多端系统源码支持微信小程序+微信公众号+H5+APP

&#x1f3b1;台球助教系统&#xff1a;你的私人教练在线等你&#x1f3af; 功能介绍 球厅端&#xff1a;球厅认证、教练人数、教练的位置记录、助教申请、我的项目、签到记录、我的钱包、数据统计 教练端&#xff1a;我的页面&#xff0c;数据统计、订单详情、保证金、实名…

CP测试是什么 及名词解释

芯片中的CP一般指的是CP测试&#xff0c;也就是晶圆测试&#xff08;Chip Probing&#xff09;。 一、CP测试是什么 CP测试在整个芯片制作流程中处于晶圆制造和封装之间&#xff0c;测试对象是针对整片晶圆&#xff08;Wafer&#xff09;中的每一个Die&#xff0c;目的是确保…

如何衡量llm 数据集的多样性

衡量大型语言模型&#xff08;LLM&#xff09;数据集的多样性是一个复杂的问题&#xff0c;因为多样性可以从多个角度来考虑。以下是一些常用的方法和指标来评估数据集的多样性&#xff1a; 词汇多样性&#xff1a; 类型-词符比&#xff08;Type-Token Ratio, TTR&#xff09;…

群辉DSM7下ZeroTier的安装

目录 一、起因 二、具体操作 1、添加组件源: 2、安装套件 3、开启ssh 4、连接ssh执行修补 5、手工启动ZeroTier 6、使用终端命令加入网络 7、审核通过该节点的加入 三、测试链接 1、PC端测试 2、手机APP测试 ZeroTier是个内网穿透的远程组网系统,它可以将全世界的终…

功率半导体静态试验测试方法

VCES 集电极-发射极饱和电压 VCES&#xff08;Voltage Collector-Emitter Saturation&#xff0c;集电极-发射极饱和电压&#xff09;是指晶体管&#xff08;通常指双极型晶体管&#xff0c;如BJT&#xff09;在饱和工作区时集电极与发射极之间的电压。 测量VCES的过程通常如…

算法笔记(二叉树1)

leetcode144 二叉树的前序遍历 递归版本 public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();preorder(root, res);return res; }public void preorder(TreeNode root, List<Integer> res) {if (root n…

【电子数据取证】如何快速在CSV中找到涉案手机号码

文章关键词&#xff1a;电子数据取证、聊天记录恢复、数据恢复、手机取证、介质取证 一、前言 在最近的取证工作中&#xff0c;我们遇到很多需要从大量的聊天记录数据中提取特定的信息&#xff0c;例如手机号码&#xff0c;银行号码&#xff0c;交易码。由于数据通常以数据库…

ipython的使用与详解

Ai文章推荐 1 作为程序员&#xff0c;开发用过最好用的AI工具有哪些&#xff1f; 2 Github Copilot正版的激活成功&#xff0c;终于可以chat了 3 idea,pycharm等的ai assistant已成功激活 4 新手如何拿捏 Github Copilot AI助手&#xff0c;帮助你提高写代码效率 5 Jetbrains的…

Linux系统下多网卡多网关设置

场景一&#xff1a; 主机AB得网卡1和网卡2都分别划分在VLAN1和VLAN2中&#xff0c;主机C在VLAN3中&#xff0c;VLAN1&#xff0c;2&#xff0c;3在三层交换设备上配置好网关192.168.1.1 192.168.2.1 192.168.3.1&#xff0c;并开启三层交换功能。 主机A的两块网卡分别IP为192…

Linter 与code formatter之python 编程起手式

1. Linter 与code formatter Linting and code formatting are essential practices in software development, particularly in Python, to maintain code quality, readability, and consistency. Let’s delve into their functions and how to use them in PyCharm when w…

Sectigo OV通配符SSL证书多少钱?

在网络安全领域&#xff0c;SSL数字证书起着至关重要的作用&#xff0c;尤其是在保护网站和用户信息方面。而Sectigo OV通配符证书是一种常用的数字证书之一&#xff0c;它能够为同一域名下的多个子域名提供保护&#xff0c;还能够通过企业验证来增强安全性。那么&#xff0c;对…

边缘检测(一)-灰度图像边缘检测方法

灰度图像边缘检测是数字图像处理与机器视觉中经常遇到的一个问题&#xff0c;边缘检测是否连续、光滑是判断检测方法优劣的一个重要标准&#xff0c;下面通过一个实例提供灰度图像边缘检测方法&#xff0c;该方法对其他图像检测也具有一定的参考价值。 首先&#xff0c;读入一幅…

inpaint下载安装2024-inpaint软件安装包下载v5.0.6官网最新版附加详细安装步骤

Inpaint软件最新版是一款功能强大的图片去水印软件&#xff0c;这款软件拥有强大的智能算法&#xff0c;能够根据照片的背景为用户去除照片中的各种水印&#xff0c;并修补好去除水印后的图片。并且软件操作简单、界面清爽&#xff0c;即使是修图新手也能够轻松上手&#xff0c…

面向对象编程基本概念

面向过程概述 面向过程编程&#xff0c;就是一种以过程为中心的编程思想。 分析出解决问题所需要的步骤&#xff0c;然后用函数把步骤一步一步实现。使用的时候一个一个依次调用。 面向对象编程 面向对象编程是一种对是世界理解和抽象的编程方法&#xff0c;把相关的数据和…

Python3 笔记:upper()、isupper()、lower()、islower()、swapcase()

1、upper() 方法将字符串中的小写字母转为大写字母。 语法&#xff1a;str.upper() 2、isupper() 方法检测字符串中所有的字母是否都为大写。 语法&#xff1a;str.isupper() 如果字符串中包含至少一个区分大小写的字符&#xff0c;并且所有这些(区分大小写的)字符都是大写…