ECMA6Script学习笔记(一)

【摘要】 本文是对自己学习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发展的迭代版本

历史版本:

标准版本发布时间新特性
ES11997年第一版 ECMAScript
ES21998年引入setter和getter函数,增加了try/catch,switch语句允许字符串
ES31999年引入了正则表达式和更好的字符串处理
ES4取消取消,部分特性被ES3.1和ES5继承
ES52009年Object.defineProperty,JSON,严格模式,数组新增方法等
ES5.12011年对ES5做了一些勘误和例行修订
ES62015年箭头函数、模板字符串、解构、let和const关键字、类、模块系统等
ES20162016年数组.includes,指数操作符(**),Array.prototype.fill等
ES20172017年异步函数async/await,Object.values/Object.entries,字符串填充
ES20182018年正则表达式命名捕获组,几个有用的对象方法,异步迭代器等
ES20192019年Array.prototype.{flat,flatMap},Object.fromEntries等
ES20202020年BigInt、动态导入、可选链操作符、空位合并操作符
ES20212021年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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XError_xiaoyu

你的支持,使我更好的创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值