ES6新增

140 阅读2分钟

(作者笔记自用)

1.const、let:

ES6letconst 实现了块级所用域的变量声明方式,使用 letconst 声明变量能有效避免由于变量提升导致的
变量污染的问题。因为用 letconst 声明的变量作用域是代码块,这个设计比较符合大多数人的思维方式。并且严格
来说, const 声明了一个指向变量的指针,并不是说 const 声明的变量不可改变, 而是该指针指向的地址不可改变。

2.map、set: set和数组一样,都是一些有序值的的集合,但是set里面是不会出现重复的数据的,并且它的主要作用一是存储数据,二是在于看一个值是不是在集合中(set查找速度更快)。

3.模板字符串:

    var data = "luoxijie";
    var div = `<div>${data}</div>`;

4.对象数组结构赋值:

    // 将response对象中的属性名data的属性值赋值给res
    const {data:res} = response;
    // a = 1;b = 2;c = 3;
    let [a, b, c] = [1, 2, 3];

5.函数剩余参数:

    // a: 如果实参的个数少于形参的个数,则多余的形参值为undefined
    // b: 如果实参的个数和形参的个数相同,则形参的值就是实参对应的结果
    // c: 如果实参的个数多余形参的个数,那么多余的实参可以通过剩余参数获取
    // d: 剩余参数最后会以数组的形式将多余的实参保存下来
    // e: 剩余参数必须写到参数的末尾
    function add(a, b, ..arg){
        console.log(arg);
    }
    add(1, 2, 3, 4, 5);

6.延展运算符:

    // 将a,b数组链接并赋值给arr
    let arr = [...a,...b]
    function add(a, b, c){
        ...
    }
    // 函数调用时
    let num = [1, 2, 3];
    add(...num);

7.函数默认参数:

    // 声明函数时
    function add(a , b, c = 1){
        ...
    }
    add(1, 2);
    add(1, 2, undefined);

8.对象字面量的增强:

    // 对象之前已经定义了的属性值,以及对象内定义函数
    var name = 'luoxijie';
    var age = 21;
    const person = {
        name,
        age,
        print_msg(){
            ...
        },
    };

9.Promise异步对象,我使用async,await比较多一点:

    // 解决回调地狱
    const p = new Promise((resolve,reject)=>{
        if(true){
          resolve('success');
        }else{
          reject('fail');
        }
    });
    p.then(res => {
        console.log(res);
    }).catch(err => {
        console.log(err);
    });

10.class的支持:

    // 
    class Person {
        constructor(name, age) {
            this.name = name;
            this.age = age;
        }
        getName() {
            return this.name;
        }
        getAge() {
            return this.age;
        }
        setName(value) {
            this.name = value;
        }
        setAge(value) {
            this.age = value;
        }
    }
    const person = new Person('luoxijie', 21);
    console.log(person.getName(), person.getAge());