ES6 新特性重点部分

目录

一、ES6简介

二、ES6新特性

        1.let变量声明 : 

        2.const常量声明 : 

        3.解构赋值 : 

            3.1 解构赋值简介

            3.2 数组解构 

            3.3 对象解构

        4.模板字符串 : 

        5.对象简写 : 

        6.运算符扩展 : 

        7.箭头函数 : 

            7.1 简介

            7.2 实例

        8.ES6---Promise : 

        9.ES6---模块化编程 : 


一、ES6简介

        ECMA(European Computer Manufacturers Association)Script 6.0,简称ES6,是JavaScript语言的下一代标准,目的是使JavaScript语言可以用来编写复杂的大型程序,并成为企业级开发语言,ES6于2015年6月发布。

        ECMAScript是JavaScript的规范 or 规则,JavaScript则是ECMAScript的一种实现


二、ES6新特性

        1.let变量声明 : 

                let用于声明变量与var声明时相比——
                let声明的变量有严格的局部作用域;
                let变量只能声明一次,而var可以声明多次;
                let不存在变量提升,而var存在变量提升.

                let.html 演示代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>let demonstration</title><script type="text/javascript">// (1)let声明的变量有严格的局部作用域;//定义一个代码块{var name = "Cyan_RA9";let color = "cyan";console.log("name = ", name);console.log("color = ", color);}console.log("name = ", name);/*输出下面这行时会报错:console.log("color = ", color);Uncaught ReferenceError: color is not defined*/console.log("-------------------------------------------------");// (2)let变量只能声明一次,而var可以声明多次;var fruit = "apple";var fruit = "grape";let food = "meat";/*下面这行代码会报错:let food = "flour";Uncaught SyntaxError: Identifier 'food' has already been declared*/console.log("fruit = ", fruit);console.log("food = ", food);console.log("-------------------------------------------------");// (3)let不存在变量提升,而var存在变量提升.//变量提升举例:/*1> 直接输出一个未定义的变量会报错——Uncaught ReferenceError: symbol is not defined.2> 但是,如果在输出语句的下面追加一条对改变量的定义,编译器会认为该变量已经定义,只不过在输出行还拿不到定义的变量,此时就会输出undefined3> "提升"指编译器从“不承认该变量” --> “承认该变量已经定义”*/console.log("symbol = " + symbol);var symbol = "RA9";//如果使用let来声明变量,不存在变量提升:/*输出下面这行时会报错——console.log("symbol_EX = " + symbol_EX)Uncaught ReferenceError: Cannot access 'symbol_EX' before initialization*/let symbol_EX = "TY";</script>
</head>
<body><h2 style="color: deepskyblue">总结——let方式声明变量比var方式声明变量更加严谨。</h2>
</body>
</html>

                运行结果 : 

        2.const常量声明 : 

                const使用中的注意事项——
                常量在定义时需要对其赋值;
                常量一经赋值后便不可修改;

                const.html 演示代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>const demonstration</title><script type="text/javascript">const e = 2.71828;console.log("e = ", e);/*  (1)const e;如果定义了const常量却没有给其赋值,会报错————Uncaught SyntaxError: Missing initializer in const declaration*//*  (2)e = 2.72;如果已经正确定义了一个const常量,对其再次赋值时会报错————Uncaught TypeError: Assignment to constant variable.*/</script>
</head>
<body><textarea style="width: 500px; height: 100px">const使用中的注意事项——(1)常量在定义时需要对其赋值;(2)常量一经赋值后便不可修改;</textarea>
</body>
</html>

                运行结果 : 

        3.解构赋值 : 

            3.1 解构赋值简介

        解构赋值是对赋值运算符的扩展,它针对数组或者对象进行模式匹配,然后对其中的变量进行赋值操作。

        解构赋值常见两种形式——数组解构对象解构

            3.2 数组解构 

                array_deconstruct.html 演示代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Array deconstructing demonstration</title><script>let array = [1, 2, 3, 4, 5];console.log("array = ", array);//数组解构(取出数组中的元素,并进行匹配赋值)//通过下标来取出let x = array[0];let y = array[1];let z = array[2];console.log("array[0] = ",x, ",array[1] = ",y, ",array[2] = ",z);//通过ES6新特性——解构赋值来取出let [a, b, c, d, e] = array;console.log(a, b, c, d, e);let [m, n] = ["Cyan", "RA9"];console.log(m, n)</script>
</head>
<body></body>
</html>

                运行结果 : 

            3.3 对象解构

                object_deconstruct.html 演示代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Object deconstructing demonstration</title><script type="text/javascript">//对象解构(首先定义一个对象类型)let blogger = {name:"Cyan_RA9",color:"cyan"};//传统方式解构对象(取出对象的属性)console.log("name=",blogger.name, ",color=",blogger.color);//ES6新特性方式解构对象let {name, color} = blogger;console.log("name=",name, ",color=",color);/*(1)用{},属性名要对应一致,否则无法匹配(undefined)(2)只需保证名称一致,顺序无所谓。*///ES6新特性解构方式在方法上的应用(注意———别忘了{})function logInfo ({name, color}) {console.log("info-name =",name);console.log("info-color =",color)};logInfo(blogger);</script>
</head>
<body></body>
</html>

                运行结果 : 

        4.模板字符串 : 

                模板字符串类似于MySQL中——在定义或使用字段时用到的反引号``.
                template_str.html演示代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Template String Demonstration</title><script type="text/javascript">//(1)换行会直接原生输出let forStr = `for (int i = 0; i < 11; ++i {System.out.println("i = " + i);}`;console.log(forStr);//(2)可以在模板字符串中插入变量和表达式,格式: ${就近原则}//插入变量let name = `Cyan_RA9`;let nameInfo = `name = ${name}`;console.log("nameInfo =",nameInfo);//插入表达式let val1 = 233.33;let val2 = 11;let expression = `val1 + val2 = ${val1 + val2}`console.log(expression);//(3) 可以在模板字符串中调用函数function getName(name) {return name;}let name_EX = "Eisen";let funStr = `The result of getName function is ${getName('Cyan_RA9')}`;let funStr_EX = `The result of getName function is ${getName(name_EX)}`;console.log(funStr)console.log(funStr_EX)</script>
</head>
<body></body>
</html>

                运行结果 : 

        5.对象简写 : 

                在传统JS中通过{}方式来定义对象的基础上,ES6允许我们对定义对象中的属性和方法进行简写。
                abbreviation.html演示代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Short</title><script type="text/javascript">//1.对象声明简写const name = "grape";const color = "a blaze of color";//传统方式定义JS对象let fruit = {name:name,color:color};console.log(fruit.name, ", ", fruit.color)console.log("fruit =",fruit)//ES6新特性——简化//属性具体的值由前面定义的变量或者常量来赋值//此处的name,默认是""let fruit_EX = {name, color};console.log(fruit_EX.name, ", ", fruit_EX.color)console.log("fruit_EX =",fruit_EX)//2.对象方法简写console.log("------------------------------------------------------------")//传统方式定义对象方法let animal = {name:'Dog',eat:function() {console.log("Dogs relish the bone.")}};animal.eat()let animal_EX = {name:"Cat",//方法的简写————可以去掉中间部分的":function"eat() {console.log("Cats relish the fish.")}}animal_EX.eat()</script>
</head>
<body></body>
</html>

                运行结果 : 

        6.运算符扩展 : 

                (1)深拷贝,指拷贝出来的对象指向新的内存空间,与原对象不冲突;
                (2)合并对象,将多个对象合并成一个新的对象,合并对象也需要用到深拷贝;
                operator_extension.html演示代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Object's operator extension demonstration</title><script type="text/javascript">//1.拷贝对象(深拷贝---独立的内存空间)let blogger = {name:"Cyan_RA9",age:21};console.log("blogger =",blogger)//深拷贝语法let blogger_EX = {...blogger};blogger_EX.name = "WangwuEX"console.log("blogger_EX =",blogger_EX)//2.合并对象(实际是深拷贝的延伸)console.log("---------------------------------------------------")let animal1 = {name:"dog",relish:"meat"}console.log("animal1 =",animal1);let animal2 = {averageAge:10.5,color:"yellow"}console.log("animal2 =",animal2);//合并对象语法let animal = {...animal1, ...animal2};console.log("animal =",animal);</script>
</head>
<body></body>
</html>

                运行结果 : 

        7.箭头函数 : 

            7.1 简介

        (1) 箭头函数多用于匿名函数的定义,它提供了更加简洁的函数书写形式,其基本语法如下——

                (形参列表) => { 函数体 }

        (2) 当箭头函数没有形参,或者有多个形参时,必须用();当箭头函数只有一个形参时,可以省略()。

        (3) 当箭头函数的函数体内有多行语句时,必须用{},表示代码块;当箭头函数的函数体中只有一条语句,并且需要返回结果时,可以省略{},结果会自动返回。

            7.2 实例

                arrow_function.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Arrow Function Demonstration</title><script type="text/javascript">//1.传统方式定义函数var f1 = function () {return 233;};var result1 = f1();console.log("f1 =",f1);console.log("f1()'s result =",result1);//2.ES6新特性———箭头函数形式/*箭头函数的基本语法演示————*/let f2 = () => {return 11.5;};let result2 = f2();console.log("f2 =",f2);console.log("f2()'s result =",result2);/*只有一个形参时,可以省略()只有一条语句时,可以省略{}*/let f3 = t => t * 2 + 1;let result3 = f3(11);console.log("f3 =",f3);console.log("f3()'s result =",result3)/*箭头函数可以作为参数进行传递;联系Java中的匿名内部类*/function test(t1) {     //这是JS中定义函数的第一种方式console.log(t1(220));};test(n => 2 * n + 1);/*PS : 箭头函数亦可以与解构赋值————“对象解构”配合使用。*/</script>
</head>
<body></body>
</html>

                运行结果 : 

        8.ES6---Promise : 

        2023.10.16---待更新,更新后放出链接🌹

        9.ES6---模块化编程 : 

        2023.10.16---待更新,更新后放出链接🌹

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

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

相关文章

尚硅谷Flink(三)时间、窗口

1 &#x1f3b0;&#x1f3b2;&#x1f579;️ &#x1f3b0;时间、窗口 &#x1f3b2;窗口 &#x1f579;️是啥 Flink 是一种流式计算引擎&#xff0c;主要是来处理无界数据流的&#xff0c;数据源源不断、无穷无尽。想要更加方便高效地处理无界流&#xff0c;一种方式就…

ddns-go配合aliyun域名解析通过ipv6实现共享桌面

ddns-go配合aliyun域名解析通过ipv6实现共享桌面 前提&#xff1a; 必须拥有ipv6公网IP&#xff0c;测试IPv6 测试 (testipv6.cn) 如果是光猫拨号一点要选择ipv4和ipv6&#xff0c;同时要看光猫是否支持ipv6转发&#xff0c;如果不支持转发也不行&#xff0c;光猫不支持ipv6…

PC电脑 VMware安装的linux CentOs7如何扩容磁盘?

一、VM中进行扩容设置 必须要关闭当前CentOS&#xff0c;不然扩展按钮是灰色的。 输入值必须大于当前磁盘容量。然后点击扩展&#xff0c;等待扩展完成会提示一个弹框&#xff0c;点击确定&#xff0c;继续确定。 二、操作CentOS扩容——磁盘分区 第一步设置完成。那就启动 …

操作系统备考学习 day10

操作系统备考学习 day10 第三章 内存管理3.2 虚拟内存管理3.2.1 虚拟内存的基本概念传统存储管理方式的特征、缺点局部性原理虚拟内存的定义和特征如何实现虚拟内存技术 3.2.2 请求分页管理方式页表机制缺页中断机构地址变换机构 3.2.3 页面置换算法最佳置换算法&#xff08;OP…

ubuntu18.04 RTX3060 rangnet++训练 bonnetal语义分割

代码链接&#xff1a; https://github.com/PRBonn/lidar-bonnetal 安装anaconda环境为 CUDA 11.0&#xff08;11.1也可以&#xff09; anaconda环境如下 numpy1.17.2 torchvision0.2.2 matplotlib2.2.3 tensorflow1.13.1 scipy0.19.1 pytorch1.7.1 vispy0.5.3 opencv_python…

【五:Httprunner的介绍使用】

接口自动化框架封装思想的建立。httprunner&#xff08;热加载&#xff1a;动态参数&#xff09;&#xff0c;去应用 意义不大。 day1 一、什么是Httprunner? 1.httprunner是一个面向http协议的通用测试框架&#xff0c;目前最新的版本3.X。以前比较流行的 2.X的版本。2.它的…

开源的容器运行时项目 Podman

本心、输入输出、结果 文章目录 开源的容器运行时项目 Podman前言Podman 简介Podman 与 Docker 的区别Podman 在使用上和 Docker 有什么区别从构建者角度分析 Podman 在使用上和 Docker 有什么区别从使用者角度分析 Podman 在使用上和 Docker 有什么区别 Podman 常用命令容器镜…

maven 常用知识速记

创建项目 maven archetype:generate依赖范围 有如下依赖示例&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope> </dependency>其中…

18.项目开发之前端项目搭建测试

项目开发之前端项目搭建测试 解压文件&#xff0c;将前端项目目录&#xff0c;拖拽到HBuilder中 前端项目QuantTrade_vue地址&#xff1a;传送门 后端项目QuantTrade地址&#xff1a; https://pan.baidu.com/s/1GF45B0QepApH8JbRIOLY7w?pwd1016 开启idea的项目&#xff0c;先…

一个适合练手的接口测试实战项目——慕慕生鲜

前言 最近很多粉丝找小月要接口测试项目练练手&#xff0c;看看实力&#xff01;今天&#xff0c;它来了 慕慕生鲜&#xff0c;完整版&#xff0c;文末有福利&#xff01; 干货来咯&#xff0c;收藏好&#xff01; 1. 接口测试需求分析 常见接口文档提供的两种方式 ①wor…

四川竹哲电商:抖店怎么修改经营类目?

抖店是抖音推出的一款电商工具&#xff0c;通过抖店可以帮助商家在抖音上开展经营活动。在抖店平台上&#xff0c;商家需要选择经营类目&#xff0c;以便在相应的领域展示商品和提供服务。然而&#xff0c;有时候商家可能需要修改经营类目&#xff0c;以适应经营策略调整或扩大…

Linux进程(三)--进程切换命令行参数

继上回书Linux进程概念&#xff08;二&#xff09;--进程状态&进程优先级&#xff0c;我们在了解了Linux进程状态和优先级的概念&#xff0c;初步掌握了进程状态的相关知识&#xff0c;最终&#xff0c;我们以Linux进程的优先级&#xff0c;引出了一些其他的概念&#xff1…

Python---循环---while循环

Python中的循环 包括 while循环与for循环&#xff0c;本文以while循环为主。 Python中所有的知识点&#xff0c;都是为了解决某个问题诞生的&#xff0c;就好比中文的汉字&#xff0c;每个汉字都是为了解决某种意思表达而诞生的。 1、什么是循环 现实生活中&#xff0c;也有…

(N-128)基于springboot,vue酒店管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis 本系统功…

vueday02——使用NTableData

1.下载naivueui 2.按需导入&#xff0c;不要全局导入 注意不要导入错误组件或者写错组件名称 import { NDataTable } from naive-ui 3.定义表头和数据&#xff01;&#xff01;&#xff01; n-data-table标签必须要使用数据和数据 少一个都不能正确渲染&#xff01;&#xf…

ATA-M4功率放大器都有哪些具体特点及优势

我们的ATA-M系列功率放大器&#xff0c;旨在将它打造为超越ATA-L系列水声功率放大器高频限制的系列产品。其中ATA-M4功率放大器是一款理想的单通道功率放大器。最大输出345Vrms电压&#xff0c;400VA功率&#xff0c;可驱动0~100%的阻性或非阻性负载。输出阻抗匹配多个档位可选…

GCC优化相关

文章目录 优化选项博文链接 单独设置某段代码优化等级博文链接 优化选项 -O/-O0:无优化(默认)-O1:使用能减少目标文件大小以及执行时间并且不会使编译时间明显增加的优化。该模式在编译大型程序的时候会花费更多的时间和内存。在-O1 下&#xff0c;编译会尝试减少代码体积和代码…

内核初始化的过程

内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中&#xff0c;start_kernel 相当于内核的 main 函数。打开这个函数&#xff0c;你会发现&#xff0c;里面是各种各样初始化函数 XXXX_init。 在操作系统里面&#xff0c;先要有个创始进程&#xff0c;有一行指令…

JAVA发送消息到RabbitMq

项目中&#xff0c;作为生产者自定义消息发送到RabbitMq。 1.引入rmq依赖 <!-- rabbitmq 依赖 --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.9.0</version></dependen…

SystemVerilog Assertions应用指南 Chapter1.31 在属性中使用形参

可以用定义形参( formal arguments)的方式来重用一些常用的属性。属性“arb”使用了4个形参,并且根据这些形参进行检验。其中还定义了特定的时钟。SVA允许使用属性的形参来定义时钟。这样,属性可以应用在使用不同时钟的相似设计模块中。同样的,时序延迟也可以参数化,这使得属性…