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

相关文章
|
7月前
|
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
|
5月前
ECMA6Script学习笔记(二)
本文是对自己学习ES6的学习笔记回顾,后面是概要内容:ES6的解构赋值提供了一种从数组或对象中快速提取数据并赋值给变量的语法。数组解构允许按顺序赋值,支持默认值处理缺失元素;对象解构则需要变量名与属性名一致,或通过冒号指定新变量名。此外,解构赋值简化了函数参数的接收,提高了代码的可读性和可维护性。
ECMA6Script学习笔记(二)
|
5月前
ECMA6Script学习笔记(三)
本文是对自己学习ES6的学习笔记回顾,后面是概要: 本文探讨了ES6中箭头函数的特点和使用。箭头函数简化了函数声明。关键特性是它们不绑定自己的this,而是继承自定义时的上下文。文中通过代码示例阐释了this指向问题,并展示了在实际开发中如何通过打印this来理解其指向。本文通过一个HTML页面的点击事件示例,演示了如何使用箭头函数处理事件和this的指向问题,强调了在不同上下文中this的不同
ECMA6Script学习笔记(三)
|
5月前
|
存储 网络架构
ECMA6Script学习笔记(四)
本文是对自己学习ES6的学习笔记回顾,后面是概要: 本文介绍了ES6中的rest和spread操作符。Rest操作符用于函数参数列表中,允许函数接收任意数量的参数,并将它们存储在一个数组中。Spread操作符则在调用函数或构造数组和对象时使用,允许将数组或对象展开为单独的元素或属性。文章通过代码示例展示了rest操作符如何收集剩余参数,以及spread操作符在合并数组和对象中的应用.
ECMA6Script学习笔记(四)
|
7月前
|
存储 JSON JavaScript
JavaScript
JavaScript
72 0
|
7月前
|
存储 移动开发 JavaScript
大话 JavaScript(Speaking JavaScript):第三十一章到第三十三章
大话 JavaScript(Speaking JavaScript):第三十一章到第三十三章
29 0
|
7月前
|
JavaScript 前端开发 安全
探索ECMAScript 2023:JavaScript的最新特性
探索ECMAScript 2023:JavaScript的最新特性
128 1
|
7月前
|
JavaScript 前端开发 Java
javaScript(一):javaScript基础知识
JavaScript是一种常用的脚本语言,通常用于为网页添加动态功能和交互性。它是一种解释性语言,可以直接在网页的HTML代码中嵌入,并由浏览器解释执行。JavaScript广泛用于网页开发,可以用于验证表单输入、创建动态效果、操作网页元素、处理用户事件等。
56 2
|
7月前
|
JavaScript 前端开发
javaScript(二):javaScript基础语法
JavaScript 是一种用于 Web 开发的强大编程语言,用于实现动态交互、动画效果和复杂业务逻辑等功能。它可以在客户端及服务器端运行,支持面向对象、事件驱动、函数式等多种编程范式。JavaScript 通过与文档对象模型(DOM)和浏览器对象模型(BOM)交互,能够实现对网页中所有元素的操作和控制,是实现丰富的 Web 体验的必备技术之一。常见的 JavaScript 库和框架有 jQuery、React、Vue.js 等。
45 1
|
7月前
|
存储 JavaScript 前端开发
Javascript
avaScript 是一种用于在网页上实现交互性和动态功能的脚本语言。
62 0