ES6新特性(基础常用)

简介: 文章介绍了ES6的常用新特性,包括let和const命令、对象解构赋值、模板字符串、Map和Set对象。通过示例代码详细解释了它们的用法和与传统ES5语法的区别,以及如何利用这些特性编写更简洁和高效的代码。

1.let const

let 声明的变量只在 let 命令所在的代码块内有效。

  //var 会造成变量穿透,如下
  for(var i = 0;i<10;i++){
   
      console.log(i);
  }
  console.log(i);//打印输出 i = 10,而原本在上面的循环中i只能到9

  for(let j = 0;j<10;j++){
   
      console.log(j);// 0-9
  }
  console.log(j);// ReferenceError: j is not defined

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

 let a = "小明";
console.log(a);
 const PI = 3.14159;
 PI = 2.3;
 console.log(PI);//报错,常量不能修改 TypeError: Assignment to constant variable.

2.对象解构赋值

解构模型:解构源,解构目标
解构的源,解构赋值表达式的右边部分。
解构的目标,解构赋值表达式的左边部分。
var [ 目标 ] = { 源 }
数组解构

    //一维数组解构
    let nums = [1, 2, 3];
    let [a, b, c] = nums;
    console.log(a);//1
    console.log(b);//2
    console.log(c);//3
    //二维数组解构,嵌套解构,使用...rest相当于可变参数,解构剩下的
    let tNums = [[9, 8, 7], [6, 5, 4], [3, 2, 1]];
    let [[a00, a01, a02], ...rest] = tNums;
    console.log(a00);//9
    console.log(a01);//8
    console.log(a02);//7
    console.log(...rest);//[6, 5, 4] , [3, 2, 1]

字符串解构

    //字符串解构
    let str = "hello!";
    let [h,i,j,k,l,m] = str;
    console.log(h);//h
    console.log(i);//e
    console.log(j);//l
    console.log(k);//l
    console.log(l);//o
    console.log(m);//!

    //使用部分解构
    let [n,...rest2] = str;
    console.log(n); //h
    console.log(rest2); //['e', 'l', 'l', 'o', '!']

对象解构

    var name = "小白";
    var sex  ="男";
    var age =21;
    let person = {
   
        name,
        sex,
        age,
    };

    //传统取元素的方法 . 和 []
    console.log(person.name);    //小白    
    console.log(person.sex);     //男 
    console.log(person.age);    //21
    //es6的对象解构
    var {
   name,sex,age} =person;
    console.log(name); //小白
    console.log(sex); //男
    console.log(age); //21

    //对象解构例子
    let peoples = {
   p1:{
   name:"张三",age:34},p2:{
   name:"李四",age:33},p3:{
   name:"白云飞",age:18}};
    let {
    p1,p2,p3} = peoples;
    console.log(p1); //{name: '张三', age: 34}
    console.log(p2); //{name: '李四', age: 33}
    console.log(p3); //{name: '白云飞', age: 18}


    let {
   p: [x, {
    y }] }  = {
   p: ['hello', {
   y: 'world'}] };
    console.log(x);//hello
    console.log(y);//world

3.模板字符串

传统字符串拼接 ,首先字符串由 ""或者''包裹,然后用+来拼接。
es6提供的新的拼接方式 ,字符串由 ``来包裹,然后只需要使用${}来提取你所要的值进行拼接即可。

    //传统字符串拼接 
    var p1 = {
   name:"白云飞",age:18,id:"2020040411"};
    let str = "今天上课"+p1.name+"听的很认真!";
    console.log(str);
    //es6模板字符串拼接 
    let str2 = `今天上课${
     p1.name}听的很认真!`;
    console.log(str2);
    //在es6中模板字符串,回车换行也会被记录进去
    let str3 = `今天上课
                ${
     p1.name}
                 听的很认真!`;
    console.log(str3);

在这里插入图片描述

4.Map Set

Map对象

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
Map 中的键值是有序的(FIFO 原则)先进先出==>队列,Map 的键值对个数可以从 size 属性获取。

map的set 和遍历

    let p1 = {
   name:"白云菲",age:20,sid:"040416"};
    let p2 = {
   name:"叶子君",age:21,sid:"040417"};
    let p3 = {
   name:"张三",age:22,sid:"040418"};
    let mapList = new Map();
    //以学号为key,学生信息为value压入map中
    mapList.set(p1.sid,p1);
    mapList.set(p2.sid,p2);
    mapList.set(p3.sid,p3);
    //Map迭代遍历
    // 1. for of
    for (let mapListElement of mapList) {
   
        console.log(mapListElement);
    };
    // 2.for each
    mapList.forEach(function (value, key) {
   
        console.log(key+"--");
        for (let e in value) {
   
            console.log(e+":"+value[e]);
        };
    });

for of遍历结果
在这里插入图片描述
for each遍历结果
在这里插入图片描述

map的合并和复制

map复制

//map的复制
 var map1 = new Map([["200102", "春"], ["200106", "夏"]]);
 var map2 = new Map(map1);
 for (let map2Element of map2) {
   
     console.log(map2Element);
 }

在这里插入图片描述
map合并

    var map1 = new Map([["200102", "春"], ["200106", "夏"]]);
    var map2 = new Map([["030311", "小白"], ["030316", "小飞"],["200106","小云"]]);
    var mapUnion = new  Map([...map2,...map1]);
    for (let mapUnionElement of mapUnion) {
   
        console.log(mapUnionElement);
    }
//注意合并时如果有重复的键,那么后面的会覆盖前面的 夏 覆盖 小云

在这里插入图片描述

Map和数组的转换

Map 构造函数可以将一个 二维 键值对数组转换成一个 Map 对象。
使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组。

 var arr1 = [["key1", "value1"], ["key2", "value2"]];
 // Map 构造函数可以将一个 二维 键值对数组转换成一个 Map 对象
 var map1= new Map(arr1);
 for (let map1Element of map1) {
   
     console.log(map1Element);
 }
 // 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
 var arr2 = Array.from(map1);
 console.log(arr2);

在这里插入图片描述

Set对象

Set 对象,不重复且无序,常用于数组的去重,取交集并集差集(和数学中的概念是一样的)。

set的去重,取并交差集

    var a = new Set([1,2,3,4,1,2]);
    console.log(a);// 1,2,3,4
    var b = new Set([5,6,7,8]);
    //将a,b两个一维数组合并为一个二维数组
    var union =new Set([...a,...b]);
    console.log(union);// 1, 2, 3, 4, 5, 6, 7, 8
    //取a,c的交集
    var c = new Set([1,2,6,4]);
    var interSet = new Set([...a].filter(x => c.has(x)));
    console.log(interSet);// 1 ,2 ,4
    //取a,c的差集
    var diffSet = new Set([...a].filter(x => !c.has(x)));
    console.log(diffSet);// 3
    //取c,a的差集
    var diffSet2 = new Set([...c].filter(x => !a.has(x)));
    console.log(diffSet2);// 6

在这里插入图片描述

--------------------------------------------------未完待续--------------------------------------------------

相关文章
|
7月前
|
JavaScript 前端开发 开发者
ES6的常用新特性17条
ES6,也称为ECMAScript 2015,是JavaScript语言的一个重大更新,它引入了许多新的语法特性。以下是ES6的一些主要语法
|
4月前
|
JavaScript 前端开发
ES6新特性(一)
ES6新特性(一)
|
4月前
|
JavaScript 前端开发
ES6新特性(二)
ES6新特性(二)
|
存储 JavaScript 前端开发
ES6新特性
ES6新增特性详细内容
|
7月前
|
JavaScript 前端开发 开发者
es6的新特性
es6的新特性
59 7
|
JavaScript 前端开发 网络架构
关于ES6新特性的总结 1
关于ES6新特性的总结
55 0
|
7月前
|
前端开发
ES6 部分新特性使用
ES6 部分新特性使用
46 0
|
JavaScript 前端开发 开发者
ES6 新特性
这是每个前端开发者都应该掌握的技能。ES6是JavaScript的一个重要的版本升级,它带来了许多新特性和语法糖,让我们的代码更加简洁高效。无论你是新手还是有经验的开发者,掌握ES6都会让你的编码变得更加愉快和高效。那么,让我们开始吧!
|
前端开发
关于ES6新特性的总结 2
关于ES6新特性的总结
44 0
|
Java
es6中简单常用的新特性
es6中简单常用的新特性
57 0