ES6新特性的学习和使用

一时失言乱红尘 2021-09-21 02:06 338阅读 0赞

ES6新特性的学习和使用

本文是基于Windows 10系统环境,进行ES6新特性的学习和使用

  • Windows 10
  • React

一、ES6的新语法

(1) let和const

ES6之后尽量少使用var来声明变量,会产生跨越作用域的风险

  • let 声明一个变量
    在某一个大括号里面声明的let变量,作用域只在大括号里面
  • const 声明一个常量

(2) 字符串扩展

  • includes(param):返回布尔值,表示是否找到了param参数字符串
  • startsWith(param):返回布尔值,表示param参数字符串是否在原字符串头部
  • endsWith(param):返回布尔值,表示param参数字符串是否在原字符串尾部

(3) 数组解构

  1. let arr = [1, 2, 3]
  2. const [a, b, c] = arr
  3. console.log(a) // a= 1
  4. console.log(b) // b= 2
  5. console.log(c) // c= 3

(4) 对象解构

  1. const person = {
  2. name:'xu',
  3. age:20,
  4. }
  5. const { name:newName, age:newAge } = person
  6. console.log(newName) // newName= xu
  7. console.log(newAge ) // newAge = 20

(5) 函数参数默认值

  1. function add(a, b=1){
  2. return a+b;
  3. }

(6) 箭头函数

  • 函数只有一个参数

    function show(a){

    1. console.log(a);

    }
    ==>
    const show2 = a => console.log(a);

  • 函数有多个参数

    function add(a,b){

    1. console.log(a+b);

    }
    ==>
    const add2 = (a,b) => console.log(a+b);

  • 函数有多个参数,且多行代码

    function add(a,b){

    1. let c = a + b
    2. return c;

    }
    ==>
    const add2 = (a,b) =>{

    1. let c = a+b;
    2. return c;

    }

(7) 箭头函数结合解构表达式

  1. const person = {
  2. name:'xu',
  3. age:20,
  4. }
  5. const hello2 = ( { name} ) => console.log(name);

(8) map函数

  • map函数接收一个函数,然后返回处理后的数组

    let arr = [1, 2, 3]
    let newArr = arr.map(item => return item+1);
    // 返回 [2, 3, 4]

(9) reduce函数

  • reduce函数接收一个函数和一个初始值(可选),然后返回处理后的一个数值

    let arr = [1, 2, 3]
    let newArr = arr.reduce((a,b)=>return a+b);
    // 返回6

(10) 扩展运算符

  • 扩展运算符是…,将数组或者对象转为用逗号分隔开的参数序列

    console.log(…[1, 2, 3]) // 1,2,3

    //数组合并
    let arr = […[1, 2, 3],…[4,5,6]]
    console.log(arr) // 1,2,3,4,5,6

    //与解构表达式结合
    const [first, …rest] = [1,2,3]
    console.log(rest) // 2,3

(11) 异步函数Promise

  • 扩展运算符是…,将数组或者对象转为用逗号分隔开的参数序列

    const p = new Promise((resolve, reject)=>{

    1. setTimeout(()=>{
    2. let num = Math.random();
    3. if(num<0.5){
    4. resolve('success' + num);
    5. } else{
    6. reject('error' + num);
    7. }
    8. });

    });

    p.then(value=>{

    1. console.log(value);

    }).catch(error=>{

    1. console.log(error);

    })

一、新集合Set

  • Set类似于数组,但是成员的值都是唯一的,没有重复的值,可以类比于C++中的集合Set

(1) 初始化Set

  1. const s = new Set([1,2,3,4,4,2]);
  2. console.log(s); // Set(4) {1, 2, 3, 4}

(2) Set转化成Array

  1. const items = new Set([1,9,4,6]);
  2. const array = Array.from(items);
  3. console.log(array); // [1,9,4,6]

(3) 打印Set的大小

  1. const s = new Set([1,2,3,4,4,2]);
  2. console.log(s.size); // 4

(4) Set是否含有某个元素

  1. const s = new Set();
  2. s.add(6).add(8).add(8);
  3. console.log(s.size); // 2
  4. console.log(s.has(6)); // true
  5. console.log(s.has(7)); // false
  6. console.log(s.has(8)); // true

(5) Set删除某一个元素

  1. const s = new Set();
  2. s.add(6).add(8).add(8);
  3. console.log(s); // Set(2) {6, 8}
  4. s.delete(6);
  5. console.log(s); // Set(2) {8}

(6) Set获取某一个元素

  1. const set = new Set([1, 2, 3, 4, 4]);
  2. const result = [...set][1];
  3. console.log(result);

(7) Set添加某一个元素

  1. const result= new Set();
  2. result.add(1)
  3. console.log(result);

(8) Set清除所有元素

  1. const result= new Set([2,1,5]);
  2. result.clear()
  3. console.log(result);

(7) Set应用—数组去重

  1. function dedupe(array) {
  2. return Array.from(new Set(array));
  3. }
  4. dedupe([1,1,2,3]); // [1,2,3]

(8) 遍历Set

  1. // Set中的键=值
  2. let set = new Set(['aaa', 'bbb', 'ccc']);
  3. // 遍历Set中所有的键
  4. for(let item of set.keys()) {
  5. console.log(item); // aaa bbb ccc
  6. }
  7. // 遍历Set中所有的值
  8. for(let item of set.values()) {
  9. console.log(item); // aaa bbb ccc
  10. }
  11. // 遍历Set中所有的键值对
  12. for(let item of set.entries()){
  13. console.log(item); // ["aaa", "aaa"],["bbb", "bbb"],["ccc", "ccc"]
  14. }
  15. // 使用 for of 遍历Set中所有的值
  16. for (let item of set) {
  17. console.log(item); // aaa bbb ccc
  18. }
  19. // 调用forEach()方法
  20. set.forEach((value, key) => {
  21. console.log(key + ' : ' + value)
  22. });
  23. // aaa:aaa bbb:bbb ccc:ccc
  24. let s = new Set([6,7,8]);
  25. // map 将原数组映射成新数组
  26. s = new Set([...s].map(x => x * 2));
  27. console.log(s); // [12,14,16]
  28. // filter返回过滤后的新数组
  29. s = new Set([...s].filter(x => (x % 3) ==0));
  30. console.log(s); //[6]
  31. // 实现并集、交集、差集
  32. let s1 = new Set([6,7,8]);
  33. let s2 = new Set([4,7,6]);
  34. let union = new Set([...s1, ...s2]);
  35. console.log(union);
  36. let intersect = new Set([...s1].filter(x => s2.has(x)));
  37. console.log(intersect);
  38. let difference = new Set([...s1].filter(x => !s2.has(x)));
  39. console.log(difference);
  40. // 利用原Set结构映射出一个新的结构,然后赋值给原来的Set结构
  41. let s1 = new Set([1,2,3]);
  42. s1 = new Set([...s1].map(val => val *2));
  43. console.log(s1);
  44. // 利用Array.from
  45. let s2 = new Set([1,2,3]);
  46. s2 = new Set(Array.from(s2, val => val * 2));
  47. console.log(s2);

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ES6特性学习

    ES6 简介 ECMAScript 6 简称 ES6,是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标是使得 JavaScript 语

    相关 es6特性

    1.let && const •都是块级作用域 •不能重复定义 •避免了变量提升 ① let命令也用于声明对象,但是作用域为局部。 ![在这里插入图片描述][

    相关 es6特性

    es6语法 > es6语法用起来是十分方便的,但是有些浏览器还是不支持,但是做大型项目中基本上要用到转码器(babel转码器),可以把es6语法转为es5直接使用。 T

    相关 ES6特性

    1.变量声明let和const 在ES6以前,var关键字声明变量。无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)。这就是函数变量提升例如:

    相关 ES6特性

    1.声明变量的关键字:const 和 let JavaScript ES6中引入了另外两个声明变量的关键字:const和let。在ES6中,我们将很少能看到var了。 co