• 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 演示代码如下 : 

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>let demonstrationtitle>
    6. <script type="text/javascript">
    7. // (1)let声明的变量有严格的局部作用域;
    8. //定义一个代码块
    9. {
    10. var name = "Cyan_RA9";
    11. let color = "cyan";
    12. console.log("name = ", name);
    13. console.log("color = ", color);
    14. }
    15. console.log("name = ", name);
    16. /*
    17. 输出下面这行时会报错:
    18. console.log("color = ", color);
    19. Uncaught ReferenceError: color is not defined
    20. */
    21. console.log("-------------------------------------------------");
    22. // (2)let变量只能声明一次,而var可以声明多次;
    23. var fruit = "apple";
    24. var fruit = "grape";
    25. let food = "meat";
    26. /*
    27. 下面这行代码会报错:
    28. let food = "flour";
    29. Uncaught SyntaxError: Identifier 'food' has already been declared
    30. */
    31. console.log("fruit = ", fruit);
    32. console.log("food = ", food);
    33. console.log("-------------------------------------------------");
    34. // (3)let不存在变量提升,而var存在变量提升.
    35. //变量提升举例:
    36. /*
    37. 1> 直接输出一个未定义的变量会报错——
    38. Uncaught ReferenceError: symbol is not defined.
    39. 2> 但是,如果在输出语句的下面追加一条对改变量的定义,
    40. 编译器会认为该变量已经定义,只不过在输出行还拿不到定义的变量,
    41. 此时就会输出undefined
    42. 3> "提升"指编译器从“不承认该变量” --> “承认该变量已经定义”
    43. */
    44. console.log("symbol = " + symbol);
    45. var symbol = "RA9";
    46. //如果使用let来声明变量,不存在变量提升:
    47. /*
    48. 输出下面这行时会报错——
    49. console.log("symbol_EX = " + symbol_EX)
    50. Uncaught ReferenceError: Cannot access 'symbol_EX' before initialization
    51. */
    52. let symbol_EX = "TY";
    53. script>
    54. head>
    55. <body>
    56. <h2 style="color: deepskyblue">总结——let方式声明变量比var方式声明变量更加严谨。h2>
    57. body>
    58. html>

                    运行结果 : 

            2.const常量声明 : 

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

                    const.html 演示代码如下 : 

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>const demonstrationtitle>
    6. <script type="text/javascript">
    7. const e = 2.71828;
    8. console.log("e = ", e);
    9. /* (1)
    10. const e;
    11. 如果定义了const常量却没有给其赋值,会报错————
    12. Uncaught SyntaxError: Missing initializer in const declaration
    13. */
    14. /* (2)
    15. e = 2.72;
    16. 如果已经正确定义了一个const常量,对其再次赋值时会报错————
    17. Uncaught TypeError: Assignment to constant variable.
    18. */
    19. script>
    20. head>
    21. <body>
    22. <textarea style="width: 500px; height: 100px">
    23. const使用中的注意事项——
    24. (1)常量在定义时需要对其赋值;
    25. (2)常量一经赋值后便不可修改;
    26. textarea>
    27. body>
    28. html>

                    运行结果 : 

            3.解构赋值 : 

                3.1 解构赋值简介

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

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

                3.2 数组解构 

                    array_deconstruct.html 演示代码如下 : 

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Array deconstructing demonstrationtitle>
    6. <script>
    7. let array = [1, 2, 3, 4, 5];
    8. console.log("array = ", array);
    9. //数组解构(取出数组中的元素,并进行匹配赋值)
    10. //通过下标来取出
    11. let x = array[0];
    12. let y = array[1];
    13. let z = array[2];
    14. console.log("array[0] = ",x, ",array[1] = ",y, ",array[2] = ",z);
    15. //通过ES6新特性——解构赋值来取出
    16. let [a, b, c, d, e] = array;
    17. console.log(a, b, c, d, e);
    18. let [m, n] = ["Cyan", "RA9"];
    19. console.log(m, n)
    20. script>
    21. head>
    22. <body>
    23. body>
    24. html>

                    运行结果 : 

                3.3 对象解构

                    object_deconstruct.html 演示代码如下 : 

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Object deconstructing demonstrationtitle>
    6. <script type="text/javascript">
    7. //对象解构(首先定义一个对象类型)
    8. let blogger = {
    9. name:"Cyan_RA9",
    10. color:"cyan"
    11. };
    12. //传统方式解构对象(取出对象的属性)
    13. console.log("name=",blogger.name, ",color=",blogger.color);
    14. //ES6新特性方式解构对象
    15. let {name, color} = blogger;
    16. console.log("name=",name, ",color=",color);
    17. /*
    18. (1)用{},属性名要对应一致,否则无法匹配(undefined)
    19. (2)只需保证名称一致,顺序无所谓。
    20. */
    21. //ES6新特性解构方式在方法上的应用(注意———别忘了{})
    22. function logInfo ({name, color}) {
    23. console.log("info-name =",name);
    24. console.log("info-color =",color)
    25. };
    26. logInfo(blogger);
    27. script>
    28. head>
    29. <body>
    30. body>
    31. html>

                    运行结果 : 

            4.模板字符串 : 

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

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Template String Demonstrationtitle>
    6. <script type="text/javascript">
    7. //(1)换行会直接原生输出
    8. let forStr = `for (int i = 0; i < 11; ++i {
    9. System.out.println("i = " + i);
    10. }`;
    11. console.log(forStr);
    12. //(2)可以在模板字符串中插入变量和表达式,格式: ${就近原则}
    13. //插入变量
    14. let name = `Cyan_RA9`;
    15. let nameInfo = `name = ${name}`;
    16. console.log("nameInfo =",nameInfo);
    17. //插入表达式
    18. let val1 = 233.33;
    19. let val2 = 11;
    20. let expression = `val1 + val2 = ${val1 + val2}`
    21. console.log(expression);
    22. //(3) 可以在模板字符串中调用函数
    23. function getName(name) {
    24. return name;
    25. }
    26. let name_EX = "Eisen";
    27. let funStr = `The result of getName function is ${getName('Cyan_RA9')}`;
    28. let funStr_EX = `The result of getName function is ${getName(name_EX)}`;
    29. console.log(funStr)
    30. console.log(funStr_EX)
    31. script>
    32. head>
    33. <body>
    34. body>
    35. html>

                    运行结果 : 

            5.对象简写 : 

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

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Shorttitle>
    6. <script type="text/javascript">
    7. //1.对象声明简写
    8. const name = "grape";
    9. const color = "a blaze of color";
    10. //传统方式定义JS对象
    11. let fruit = {
    12. name:name,
    13. color:color
    14. };
    15. console.log(fruit.name, ", ", fruit.color)
    16. console.log("fruit =",fruit)
    17. //ES6新特性——简化
    18. //属性具体的值由前面定义的变量或者常量来赋值
    19. //此处的name,默认是""
    20. let fruit_EX = {name, color};
    21. console.log(fruit_EX.name, ", ", fruit_EX.color)
    22. console.log("fruit_EX =",fruit_EX)
    23. //2.对象方法简写
    24. console.log("------------------------------------------------------------")
    25. //传统方式定义对象方法
    26. let animal = {
    27. name:'Dog',
    28. eat:function() {
    29. console.log("Dogs relish the bone.")
    30. }
    31. };
    32. animal.eat()
    33. let animal_EX = {
    34. name:"Cat",
    35. //方法的简写————可以去掉中间部分的":function"
    36. eat() {
    37. console.log("Cats relish the fish.")
    38. }
    39. }
    40. animal_EX.eat()
    41. script>
    42. head>
    43. <body>
    44. body>
    45. html>

                    运行结果 : 

            6.运算符扩展 : 

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

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Object's operator extension demonstrationtitle>
    6. <script type="text/javascript">
    7. //1.拷贝对象(深拷贝---独立的内存空间)
    8. let blogger = {
    9. name:"Cyan_RA9",
    10. age:21
    11. };
    12. console.log("blogger =",blogger)
    13. //深拷贝语法
    14. let blogger_EX = {...blogger};
    15. blogger_EX.name = "WangwuEX"
    16. console.log("blogger_EX =",blogger_EX)
    17. //2.合并对象(实际是深拷贝的延伸)
    18. console.log("---------------------------------------------------")
    19. let animal1 = {
    20. name:"dog",
    21. relish:"meat"
    22. }
    23. console.log("animal1 =",animal1);
    24. let animal2 = {
    25. averageAge:10.5,
    26. color:"yellow"
    27. }
    28. console.log("animal2 =",animal2);
    29. //合并对象语法
    30. let animal = {...animal1, ...animal2};
    31. console.log("animal =",animal);
    32. script>
    33. head>
    34. <body>
    35. body>
    36. html>

                    运行结果 : 

            7.箭头函数 : 

                7.1 简介

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

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

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

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

                7.2 实例

                    arrow_function.html代码如下 : 

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Arrow Function Demonstrationtitle>
    6. <script type="text/javascript">
    7. //1.传统方式定义函数
    8. var f1 = function () {
    9. return 233;
    10. };
    11. var result1 = f1();
    12. console.log("f1 =",f1);
    13. console.log("f1()'s result =",result1);
    14. //2.ES6新特性———箭头函数形式
    15. /*
    16. 箭头函数的基本语法演示————
    17. */
    18. let f2 = () => {
    19. return 11.5;
    20. };
    21. let result2 = f2();
    22. console.log("f2 =",f2);
    23. console.log("f2()'s result =",result2);
    24. /*
    25. 只有一个形参时,可以省略()
    26. 只有一条语句时,可以省略{}
    27. */
    28. let f3 = t => t * 2 + 1;
    29. let result3 = f3(11);
    30. console.log("f3 =",f3);
    31. console.log("f3()'s result =",result3)
    32. /*
    33. 箭头函数可以作为参数进行传递;
    34. 联系Java中的匿名内部类
    35. */
    36. function test(t1) { //这是JS中定义函数的第一种方式
    37. console.log(t1(220));
    38. };
    39. test(n => 2 * n + 1);
    40. /*
    41. PS : 箭头函数亦可以与解构赋值————“对象解构”配合使用。
    42. */
    43. script>
    44. head>
    45. <body>
    46. body>
    47. html>

                    运行结果 : 

            8.ES6---Promise : 

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

            2023.10.24---已更新,链接如下 : 

    https://blog.csdn.net/TYRA9/article/details/133912776?spm=1001.2014.3001.5501icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/133912776?spm=1001.2014.3001.5501

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

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

            2023.10.24---已更新,链接如下 : 

    https://blog.csdn.net/TYRA9/article/details/133965237?spm=1001.2014.3001.5501icon-default.png?t=N7T8https://blog.csdn.net/TYRA9/article/details/133965237?spm=1001.2014.3001.5501

  • 相关阅读:
    基于SSM的宿舍管理系统【附源码文档】
    Java基础 - 练习(一)打印等腰三角形
    【ARC机制和Java中C#中垃圾回收机制的区别 构造方法里面必须用setter方法赋值 Objective-C语言】
    方舟生存进化开服需要多少钱
    【c++刷题Day2】专题2T4
    供应化学试剂BHQ-1 氨基|BHQ-1 amine|1308657-79-5
    C++那些事儿 —— 名字空间(三分钟带你了解using namespace std到底是个啥?)
    《QT实用小工具·四十二》圆形发光图像
    使用第三方账号认证(一):钉钉扫码登录
    当鼠标移入一个元素时、其它隐藏部分的元素展示出来【如何将隐藏的操作展示、将只读信息变为可输入的内容】
  • 原文地址:https://blog.csdn.net/TYRA9/article/details/133796034