ECMA6Script学习笔记(一)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本文是对自己学习ES6的学习笔记回顾,后面是概要内容neirECMAScript 6(ES6)是2015年发布的JavaScript语言重大更新,引入了箭头函数、模板字符串、let/const声明、解构赋值等特性,提升了开发效率.详细解释了let和const与var的差异,包括作用域、变量提升和全局作用域影响。同时,展示了模板字符串的多行和变量插入功能.

【摘要】 本文是对自己学习ES6的学习笔记回顾,后面是概要内容neirECMAScript
6(ES6)是2015年发布的JavaScript语言重大更新,引入了箭头函数、模板字符串、let/const声明、解构赋值等特性,提升了开发效率.详细解释了let和const与var的差异,包括作用域、变量提升和全局作用域影响。同时,展示了模板字符串的多行和变量插入功能.
原创声明:文章首发地址:https://bbs.huaweicloud.com/blogs/431635,本文是由本作者在华为云社区的首发后搬运而来,不存在抄袭.

1. es6的介绍

ECMAScript 6,简称ES6,是JavaScript语言的一次重要革新,它在2015年正式发布,标志着ECMAScript标准的第六次迭代。ES6的推出为JavaScript带来了一系列创新特性,包括箭头函数、模板字符串、let和const声明关键字、解构赋值、默认参数以及模块系统等,极大地丰富了JavaScript的表达能力和开发效率。特别是Vue 3框架的广泛应用,使得ES6成为了掌握Vue 3的必经之路
ES6对JavaScript的改进在以下几个方面:

  1. 语法简洁性:ES6引入了箭头函数、类语法和模板字符串等新语法,使代码更加简洁明了。
  2. 功能强化:通过新增的API、解构语法和迭代器等特性,ES6扩展了JavaScript的功能,使其更加强大。
  3. 适用性提升:模块化功能的引入为JavaScript代码的组织和管理提供了更优的解决方案,提升了代码的可维护性,并使JavaScript在大型应用开发中更加得心应手。

综合来看,ES6在提升JavaScript语言的核心特性和功能性方面取得了显著进步。随着ES6成为JavaScript的现行标准,其新特性已获得现代浏览器的广泛支持,开发者可以放心地采用ES6特性进行前端应用的开发。

2.ES6发展的迭代版本

历史版本:

标准版本 发布时间 新特性
ES1 1997年 第一版 ECMAScript
ES2 1998年 引入setter和getter函数,增加了try/catch,switch语句允许字符串
ES3 1999年 引入了正则表达式和更好的字符串处理
ES4 取消 取消,部分特性被ES3.1和ES5继承
ES5 2009年 Object.defineProperty,JSON,严格模式,数组新增方法等
ES5.1 2011年 对ES5做了一些勘误和例行修订
ES6 2015年 箭头函数、模板字符串、解构、let和const关键字、类、模块系统等
ES2016 2016年 数组.includes,指数操作符(**),Array.prototype.fill等
ES2017 2017年 异步函数async/await,Object.values/Object.entries,字符串填充
ES2018 2018年 正则表达式命名捕获组,几个有用的对象方法,异步迭代器等
ES2019 2019年 Array.prototype.{flat,flatMap},Object.fromEntries等
ES2020 2020年 BigInt、动态导入、可选链操作符、空位合并操作符
ES2021 2021年 String.prototype.replaceAll,逻辑赋值运算符,Promise.any等
... ...

3. es6的变量和模板字符串

在展示之前首先介绍一下方便后续可以进行操作的web页面展示的插件Live Server 在VsCode中搜索安装即可,怎么使用,在要展示的html页面点击如图右下角所示的Golive即可打开一个类似tomcat的服务器进行使用

image.png

ES6 新增了letconst,用来声明变量,使用的细节上也存在诸多差异

 /*
        let 和var的差别:
            1、let 不能重复声明
            2、let有块级作用域,非函数的花括号遇见let会有块级作用域,也就是只能在花括号里面访问。
            3、let不会预解析进行变量提升
            4、let 定义的全局变量不会作为window的属性
            5、let在es6中推荐优先使用
*/
// 1、let 不能重复声明
         var i = 10;
         var i = "";
         let j = 10;
//  let j = ""; //再次声明会报错

image.png

//  2、let有块级作用域,非函数的花括号遇见let会有块级作用域,也就是只能在花括号里面访问。
        /*
            例如我们在java中常用的方法,作用域为在{}内
            if(){}
            for(){}
            while(){}
            {}
        */
         {
   
   
            var i = 10;
            let j = 10;
            let k = 9;
            console.log(k); //在块级作用域内可以正常输出
         }
         console.log(i); //可以正常输出
         console.log(j); // j is not defined 花括号外面无法访问

image.png

//  3、let不会预解析进行变量提升
        console.log(a); //没有定义先预解析变量可以先访问,顶多算没有赋值
        var a = 10;

        console.log(b); //  b is not defined  let没有预解析,不能先访问再定义
        let b = 9;

image.png

// 4、let 定义的全局变量不会作为window的属性
        var a = 10; // a会变成window对象的属性
        let b = 10; // b不会变成window对象的属性
        console.log(window.a); // 10
        console.log(window.b); // undefined

image.png

// 5、let在es6中推荐优先使用
  • const和var的差异

    1、新增const和let类似,只是const定义的变量不能修改

    2、并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。

// 6.const就是不可修改的let final修饰的变量
        let a = 10;
        a = 20; //可以修改

        const b = 10; //定义时必须赋值,不能先定义后赋值
        b = 20; //不能修改

image.png

//声明场景语法,建议变量名大写区分
        const PI = 3.1415926; 

        //不允许修改指向的地址,但是可以数组和对象元素进行修改
        const teachers = ["老张","老李","老刘"];
        //teachers =["","",""] //不可以指向新的地址
        teachers.push("老王"); //可以修改
        teachers[0] = "老张2"; //可以修改

模板字符串(template string)是增强版的字符串,用反引号(`)标识

// 1 多行普通字符串 直接写不可以以 通过+进行拼接
            let info =
                '<ul>'+
                '<li>JAVA</li>'+
                '<li>Python</li>'+
                '<li>VUE</li>'+
                '</ul>'
            console.log(info)

image.png

// 2 多行模板字符串
//3. 展示变量内容直接使用${变量名}即可
        let pro = "html";
        let info = `
                <ul>
                    <li>JAVA</li>
                    <li>Python</li>
                    <li>VUE</li>
                    <li>${
     
     pro}</li>
                </ul>`
            console.log(info)

image.png

相关文章
|
4月前
|
JavaScript 前端开发 安全
从0开始学习JavaScript--初识JavaScript
JavaScript最初由Netscape的Brendan Eich设计,最初将其脚本语言命名为LiveScript,后来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”,因此语法上有类似之处,一些名称和命名规范也借自Java,但JavaScript的主要设计原则源自Self和Scheme。JavaScript与Java名称上的近似,是当时Netscape为了营销考虑与Sun微系统达成协议的结果。微软同时期也推出了JScript来迎战JavaScript的脚本语言。
从0开始学习JavaScript--初识JavaScript
|
2月前
ECMA6Script学习笔记(三)
本文是对自己学习ES6的学习笔记回顾,后面是概要: 本文探讨了ES6中箭头函数的特点和使用。箭头函数简化了函数声明。关键特性是它们不绑定自己的this,而是继承自定义时的上下文。文中通过代码示例阐释了this指向问题,并展示了在实际开发中如何通过打印this来理解其指向。本文通过一个HTML页面的点击事件示例,演示了如何使用箭头函数处理事件和this的指向问题,强调了在不同上下文中this的不同
ECMA6Script学习笔记(三)
|
2月前
ECMA6Script学习笔记(二)
本文是对自己学习ES6的学习笔记回顾,后面是概要内容:ES6的解构赋值提供了一种从数组或对象中快速提取数据并赋值给变量的语法。数组解构允许按顺序赋值,支持默认值处理缺失元素;对象解构则需要变量名与属性名一致,或通过冒号指定新变量名。此外,解构赋值简化了函数参数的接收,提高了代码的可读性和可维护性。
ECMA6Script学习笔记(二)
|
2月前
|
存储 网络架构
ECMA6Script学习笔记(四)
本文是对自己学习ES6的学习笔记回顾,后面是概要: 本文介绍了ES6中的rest和spread操作符。Rest操作符用于函数参数列表中,允许函数接收任意数量的参数,并将它们存储在一个数组中。Spread操作符则在调用函数或构造数组和对象时使用,允许将数组或对象展开为单独的元素或属性。文章通过代码示例展示了rest操作符如何收集剩余参数,以及spread操作符在合并数组和对象中的应用.
ECMA6Script学习笔记(四)
|
3月前
|
JSON 前端开发 JavaScript
ECMA6Script
ECMA6Script
50 0
|
4月前
|
JSON 前端开发 JavaScript
从0开始学习JavaScript--JavaScript基础
JavaScript作为一门前端编程语言,在现代web开发中扮演着不可替代的角色。它不仅为网页增添了动态和交互性,而且随着Node.js的崛起,也在服务器端开发中占据了重要地位。在本章节中,我们将探讨JavaScript的作用、重要性以及与其他前端语言的关系。
从0开始学习JavaScript--JavaScript基础
|
4月前
|
JavaScript 前端开发 安全
探索ECMAScript 2023:JavaScript的最新特性
探索ECMAScript 2023:JavaScript的最新特性
111 1
|
JavaScript API Python
|
移动开发 JavaScript 前端开发
《JavaScript高级程序设计》__ HTML中的JavaScript
前言 大家好,我是HoMeTown,web领域有一本神书大家应该都有看过,这本书我看过两遍,但是每次看都是粗粗的略过一些重要的知识点,甚至一些面试过程中的问题,在这本书里都能找到答案
123 3
|
存储 JavaScript 前端开发