ES6 新特性重点部分

news2025/3/10 11:03:41

目录

一、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> 但是,如果在输出语句的下面追加一条对改变量的定义,
            编译器会认为该变量已经定义,只不过在输出行还拿不到定义的变量,
            此时就会输出undefined
            3> "提升"指编译器从“不承认该变量” --> “承认该变量已经定义”
         */
        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.coloradmin.cn/o/1101389.html

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

相关文章

算法通过村第十五关-超大规模|青铜笔记|海量找数

文章目录 前言用4KB内存寻找重复数总结 前言 提示&#xff1a;并不是所有黑暗的地方&#xff0c;都需要光明。 --珍妮特温特森《句子不是唯一的水果》 在大部分算法中&#xff0c;默认给点给的数据量都是很小的&#xff0c;例如只有几个或者十几个元素&#xff0c;但是如果遇到…

如何定量对比两个图分类数据集的分布

以下来自gpt&#xff0c;若有勘误&#xff0c;欢迎指正&#xff1a; &#xff08;图片来自links &#xff0c;侵删&#xff09; 对于两个图分类数据集的分布&#xff0c;我们可以使用一些统计指标来进行定量对比。下面介绍一些常用的指标&#xff1a; 图分类准确率 图分类准确…

性能测试的指南:测试类型、性能测试步骤、最佳实践等

近期公司为了节省成本搞了一波机房迁移&#xff0c;整合了一些南美部署架构。有一些上google云和有些下阿里云等大的调整。 在做机房迁移项目当中就需要思考如何进行性能测试&#xff0c;这种大的机房迁移SRE&#xff08;运维&#xff09;会针对组件会做一些单组件的性能测试&a…

如何通过代码混淆绕过苹果机审,解决APP被拒问题

如何通过代码混淆绕过苹果机审&#xff0c;解决APP被拒问题 目录 iOS代码混淆 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD5 info.plist文件添加垃圾字段 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD…

aidl的注意事项

该篇继承自上一篇&#xff0c;上一篇也有一部分的注意事项&#xff0c;这一篇把其他的情况列出 一 客户段和服务端的aidl文件下的package名字要是一样的 二 server中的 manifest中的package名字&#xff0c;这个与上面两个包不能相同&#xff0c;不然在客户端设置intent的pa…

Vulnhub靶场之matrix-breakout-2-morpheus

简介&#xff1a; vulnhub是一个提供靶场环境的平台。今天从首页下载了一个来做&#xff0c;它叫matrix-breakout-2-morpheus。 项目下载地址&#xff1a;Matrix-Breakout: 2 Morpheus ~ VulnHub 0x01 信息收集 查看本机IP&#xff0c;靶机跟kali都是使用NAT模式&#xff0c;所…

【QT开发(4)】Qt Creator编译器修改,应用程序二进制接口(ABI)的版本;API、ABI、系统调用是什么?版本的选择(ABI和CPU版本)

文章目录 1.编译器的简介2 应用程序二进制接口&#xff08;ABI&#xff09;的版本3 API、ABI、系统调用是什么,以及这三个词的区别。3.1 什么是API?3.2 什么是ABI?3.3 API和系统调用有什么区别 4 Qt for Android——关于版本的选择(ABI和CPU版本)参考 1.编译器的简介 编译器…

【Linux】adduser命令使用

我们经常在linux系统中创建用户。有时候用的是 useradd 有时候用的是 adduser &#xff0c;好混乱啊到底用哪个啊。今天咱们一起来学习一下。 adduser与useradd的区别 useradd 命令是内置的 Linux 命令&#xff0c;在任何 Linux 系统中都可用。然而&#xff0c;使用这种低级…

Flink日志收集到数据库/kafka

引言 我们做项目过程中发现flink日志不同模式启动&#xff0c;存放位置不同&#xff0c;查找任务日志很不方便&#xff0c;具体问题如下&#xff1a; 原始flink的日志配置文件log4j-cli.properties appender.file.append false&#xff0c;取消追加&#xff0c;直接覆盖掉上…

Ansible---playbook 剧本

目录 一、playbook 1.1 playbook的组成 二、playbook的编写格式&#xff08;示例&#xff09; 1、定义、引用变量 2、指定远程主机sudo切换用户 3、when条件判断 4、迭代 5、Templates 模块 6、tags 模块 7、Roles 模块 一、playbook playbook是剧本的意思通过 task…

黑客技术(自学)——网络安全

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学&#xff1f;如何学&#xff1f; 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c…

web安全之路的规划

前言 我自学过程中搜集的资料已经整理成一套完整的教程&#xff0c;需要的可以点击链接&#xff1a;CSDN大礼包&#xff1a;零基础到进阶全套学习教程&#xff0c;免费分享&#xff01; 我的web安全学习策略 一、开始前的思考 我真的喜欢搞安全吗? 我只是想通过安全赚钱钱…

2023年【安徽省安全员C证】考试内容及安徽省安全员C证考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安徽省安全员C证考试内容是安全生产模拟考试一点通总题库中生成的一套安徽省安全员C证考试报名&#xff0c;安全生产模拟考试一点通上安徽省安全员C证作业手机同步练习。2023年【安徽省安全员C证】考试内容及安徽省安…

Vue - 标准开发方式、组件(全局、局部、props、事件传递)、插槽的使用

目录 一、Vue 1.1、标准开发方式 1.2、组件的使用 1.2.1、全局组件 1.2.2、局部组件 1.2.3、props 传递静态数据 1.2.4、props 传递动态数据 1.2.5、事件传递 1.2.6、插槽slot 一、Vue 1.1、标准开发方式 Vue 的标准开发方式是 SPA&#xff08;Single Page Applicatio…

【HCIP】ppp实验

实验要求 1、R1 和 R2 使用 PPP 链路直连&#xff0c;R2和R3 把2条 PPP 链路捆绑为 PPP MP 直连 2、按照图示配置 IP 地址 3、R2对R1的PPP进行单向 chap 验证 4、R2和R3的PPP进行双向 chap 验证 配置 1、如图&#xff0c;R1 和 R2 已使用 PPP 链路直连 2、R2 和 R3上配置…

Linux | Linux权限详解

目录 前言 一、访问角色的分类 1、用户的切换 2、root用户的理解 3、用户切换的理解 二、权限的理解 三、权限管理 1、文件的访问者 2、文件类型与访问权限 &#xff08;1&#xff09;文件类型 &#xff08;2&#xff09;访问权限 3、文件权限的修改 &#xff08…

敏捷开发中,Sprint回顾会的目的

Sprint回顾会的主要目的是促进Scrum团队的学习和持续改进。在每个Sprint结束后&#xff0c;团队聚集在一起进行回顾&#xff0c;以达到以下目标&#xff1a; 识别问题&#xff1a; 回顾会允许团队识别在Sprint&#xff08;迭代&#xff09;期间遇到的问题、挑战和障碍。这有助于…

专业图表绘制软件 OmniGraffle Pro mac v7.22.1中文版软件介绍

OmniGraffle Pro mac是一款Mac平台上的专业绘图软件&#xff0c;主要用于创建各种图形&#xff0c;包括流程图、组织结构图、网络拓扑图、UI原型等。该软件提供了强大的绘图工具和丰富的样式库&#xff0c;可以让用户快速创建出高质量的图形&#xff0c;并支持导入和导出各种常…

BI零售数据分析:以自身视角展开分析

随着零售业务不断扩展&#xff0c;市场竞争不断加剧&#xff0c;各层级的销售管理人员都急需一张能快速查看销售数据分析报表&#xff0c;能从中知道自己管辖内的业务最近或过去的情况&#xff0c;并依次为依据科学优化销售管理措施。这就要求零售数据分析报表信息足够多、数据…

计算机毕业设计 基于SpringBoot产业园区智慧公寓管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…