ES6-ES11

作者: 輪徊傷 | 来源:发表于2024-06-20 17:22 被阅读0次
    1、let 关键字

     let 关键字用来声明变量,使用 let 声明的变量有几个特点:
      1、不允许重复声明;
      2、块儿级作用域(局部变量);
      3、不存在变量提升;
      4、不影响作用域链;

    2、const 关键字

     const 关键字用来声明常量,const 声明有以下特点:
      1. 声明必须赋初始值;
      2. 标识符一般为大写(习惯);
      3. 不允许重复声明;
      4. 值不允许修改;
      5. 块儿级作用域(局部变量);

    应用场景:声明对象类型使用 const,非对象类型声明选择 let;

    3、解构赋值

    什么是解构赋值:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值

    // ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值;
    // 1、数组的解构赋值
    const F4 = ["大哥", "二哥", "三哥", "四哥"];
    let [a, b, c, d] = F4;
    // 这就相当于我们声明4个变量a,b,c,d,其值分别对应"大哥","二哥","三哥","四哥"
    console.log(a + b + c + d); // 大哥二哥三哥四哥
    // 2、对象的解构赋值
    const F3 = {
        name: "大哥",
        age: 22,
        sex: "男",
        xiaopin: function () { // 常用
            console.log("我会演小品!");
        }
    }
    let { name, age, sex, xiaopin } = F3; // 注意解构对象这里用的是{}
    console.log(name + age + sex + xiaopin); // 大哥22男
    xiaopin(); // 此方法可以正常调用
    

    4、模板字符串

    模板字符串(template string)是增强版的字符串,用反引号(`)标识,
    特点:
      字符串中可以出现换行符;
      可以使用 ${xxx} 形式引用变量;

    5、简化对象和函数写法

    ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁;

    // ES6允许在对象的大括号内直接写入变量和函数作为对象的属性和方法
    // 变量和函数
    let name = "Lbipanda";
    let change = function () {
        console.log("活着就是为了改变世界!");
    }
    //创建对象
    const school = {
        // 完整写法
        // name:name,
        // change:change
        // 简化写法
        name,
        change,
        // 声明方法的简化
        say() {
            console.log("言行一致!");
        }
    }
    school.change();
    school.say();
    

    6、箭头函数

     ES6允许使用箭头(=>)定义函数,箭头函数提供了一种更加简洁的函数书写方式,箭头函数多用于匿
    名函数的定义;

    箭头函数的注意点:

    1. 如果形参只有一个,则小括号可以省略;
    2. 函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的执行结果;
    3. 箭头函数 this 指向声明时所在作用域下 this 的值;
    4. 箭头函数不能作为构造函数实例化;
    5. 不能使用 arguments;
    特性:
    1. 箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值;
    2. 不能作为构造实例化对象;
    3. 不能使用 arguments 变量;

    箭头函数 this 指向声明时所在作用域下 this 的值

    1、箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值
    const school = {
    name : "大哥",
    }
    // 传统函数
    function getName(){
    console.log("getName:" + this.name);
    }
    // 箭头函数
    getName1 = () => console.log("getName1:" + this.name);
    window.name = "訾博";
    // 直接调用
    getName();
    getName1();
    // 使用call调用
    getName.call(school);
    getName1.call(school);
    // 结论:箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值
    
    2、不能作为构造实例化对象
    let Persion = (name, age) => {
        this.name = name;
        this.age = age;
    }
    let me = new Persion("訾博", 24);
    console.log(me);
    报错:Uncaught TypeError: Persion is not a constructor
    
    
    3、不能使用 arguments 变量
    let fn = () => console.log(arguments);
    fn(1, 2, 3);
    报错:Uncaught ReferenceError: arguments is not defined
    

    7、rest参数

    ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments;

    ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments;
    // ES5获取实参的方式
    function data() {
        console.log(arguments);
    }
    data("大哥", "二哥", "三哥", "四哥");
    
    // ES6的rest参数...args,rest参数必须放在最后面
    function data(...args) {
        console.log(args); // fliter some every map
    }
    data("大哥", "二哥", "三哥", "四哥");
    

    8、扩展运算符

    ... 扩展运算符能将数组转换为逗号分隔的参数序列;
    扩展运算符(spread)也是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参
    数序列,对数组进行解包;

    //1. 数组的合并 情圣 误杀 唐探
    const kuaizi = ['王太利','肖央'];
    const fenghuang = ['曾毅','玲花'];
    // 传统的合并方式
    // const zuixuanxiaopingguo = kuaizi.concat(fenghuang);
    const zuixuanxiaopingguo = [...kuaizi, ...fenghuang];
    console.log(zuixuanxiaopingguo);
    //2. 数组的克隆
    const sanzhihua = ['E','G','M'];
    const sanyecao = [...sanzhihua];// ['E','G','M']
    console.log(sanyecao);
    //3. 将伪数组转为真正的数组
    const divs = document.querySelectorAll('div');
    const divArr = [...divs];
    console.log(divArr); // arguments
    

    9、Symbol

    ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript 语言的第七种数据类
    型,是一种类似于字符串的数据类型;
    参考文章:https://blog.csdn.net/fesfsefgs/article/details/108354248

    Symbol 特点:

    1. Symbol 的值是唯一的,用来解决命名冲突的问题;
    2. Symbol 值不能与其他数据进行运算;
    3. Symbol 定义的对象属性不能使用for…in循环遍历 ,但是可以使用Reflect.ownKeys 来获取对象的
      所有键名;
    //创建Symbol
    let s = Symbol();
    // console.log(s, typeof s);
    let s2 = Symbol('尚硅谷')
    let s3 = Symbol('尚硅谷');
    console.log(s2==s3); // false
    //Symbol.for 创建
    let s4 = Symbol.for('尚硅谷');
    let s5 = Symbol.for('尚硅谷');
    console.log(s4==s5); // true
    //不能与其他数据进行运算
    // let result = s + 100;
    // let result = s > 100;
    // let result = s + s;
    // USONB you are so niubility
    // u undefined
    // s string symbol
    // o object
    // n null number
    // b boolean
    
    

    10、Set集合

    ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator
    接口,所以可以使用『扩展运算符』和『for…of…』进行遍历,集合的属性和方法:

    1. size 返回集合的元素个数;
    2. add 增加一个新元素,返回当前集合;
    3. delete 删除元素,返回 boolean 值;
    4. has 检测集合中是否包含某个元素,返回 boolean 值;
    5. clear 清空集合,返回 undefined;
    // Set集合
    let s = new Set();
    console.log(s,typeof s);
    let s1 = new Set(["大哥","二哥","三哥","四哥","三哥"]);
    console.log(s1); // 自动去重
    // 1. size 返回集合的元素个数;
    console.log(s1.size);
    // 2. add 增加一个新元素,返回当前集合;
    s1.add("大姐");
    console.log(s1);
    // 3. delete 删除元素,返回 boolean 值;
    let result = s1.delete("三哥");
    console.log(result);
    console.log(s1);
    // 4. has 检测集合中是否包含某个元素,返回 boolean 值;
    let r1 = s1.has("二姐");
    console.log(r1);
    // 5. clear 清空集合,返回 undefined;
    s1.clear();
    console.log(s1);
    

    11、Map集合

    ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map 也实现了iterator 接口,所以可以使用『扩展运算符』和
    『for…of…』进行遍历;

    Map 的属性和方法:

    1. size 返回 Map 的元素个数;
    2. set 增加一个新元素,返回当前 Map;
    3. get 返回键名对象的键值;
    4. has 检测 Map 中是否包含某个元素,返回 boolean 值;
    5. clear 清空集合,返回 undefined;
    // Map集合
    // 创建一个空 map
    let m = new Map();
    // 创建一个非空 map
    let m2 = new Map([
    ['name','尚硅谷'],
    ['slogon','不断提高行业标准']
    ]);
    // 1. size 返回 Map 的元素个数;
    console.log(m2.size);
    // 2. set 增加一个新元素,返回当前 Map;
    m.set("皇帝","大哥");
    m.set("丞相","二哥");
    console.log(m);
    // 3. get 返回键名对象的键值;
    console.log(m.get("皇帝"));
    // 4. has 检测 Map 中是否包含某个元素,返回 boolean 值;
    console.log(m.has("皇帝"));
    // 5. clear 清空集合,返回 undefined;
    m.clear();
    console.log(m);
    

    相关文章

      网友评论

          本文标题:ES6-ES11

          本文链接:https://www.haomeiwen.com/subject/ignegqtx.html