美文网首页
web前端ES6/7/8新特性

web前端ES6/7/8新特性

作者: 雨中晨星 | 来源:发表于2019-12-21 10:17 被阅读0次

    ES6中新增了哪些数据类型?
    Symbol类型(基本)
    Set类型(复杂)
    Map类型(复杂)
    WeakSet类型(复杂)
    WeakMap类型(复杂)
    TypedArray类型(复杂)

    ES6新增了哪些特性?
    const(声明常量),let(声明变量)关键词;
    map和set是数据类型;
    模板字符串;
    对象数组解构赋值;
    函数剩余参数;(...arg)
    延展运算符;(...)
    函数默认参数;fn(name='zs')
    对象字面量的增强(属性名和属性值相同,可缺省);
    Promise异步对象;
    class类的支持;

    使用let声明变量和var声明变量有什么区别?
    使用let声明的变量有块级作用域,并且没有变量的声明提升(使用let声明的变量在声明之前调用会报语法错误);
    使用var声明的变量有声明提升(在声明之前调用会报undefined),并且没有块级作用域。

    谈谈async/await的使用方式和场景
    async是用来修饰函数的声明,使用async修饰的函数会变成一个异步函数。await用来修饰函数的调用,被await修饰的函数必须返回一个promise异步对象,使用await修饰后,就会将promise异步对象转换成一个同步操作。

    箭头函数有什么作用及应用场景?
    箭头函数可以使用函数内部的this指向和函数外部保持一致;箭头函数之所以可以让函数内部的this指向和外部保持一致是因为箭头函数内部没有this指向。可以在ajax的回调函数中使用箭头函数让回调函数中的this指向事件源;可以在定时器的第二个参数中使用箭头函数,避免函数内部的this指向全局window。

    class类如何实现继承?
    使用extends关键字实现继承

    class Person{
            constructor(props){
                this.name = props.name;
                this.age = props.age;
            }
        }
        // Student 继承 Person
        class Student extends Person{
            constructor(props){
                super(props);
                this.score = props.score;
            }
        }
    

    谈谈对Promise的理解
    Promise本身并没有提供任何的代码逻辑,它只是帮助我们来改造代码结构,最显著的一个特点就是通过Promise可以解决传统的回调地狱,代码层面Promise提供了一个构造函数,在使用的时候必须通过new创建一个实例对象,在创建实例对象的时候需要传递一个匿名函数,这个匿名函数需要两个参数(resolve,reject),resolve成功处理函数,reject失败处理函数。什么时候触发成功处理函数和失败处理函数,由具体的业务逻辑来决定。resolve和reject需要通过Promise实例对象提供的then方法来传递。Promise提供了两个静态方法,all,race,all可以一次执行多个Promise实例,返回值是数组;race也可以一次执行多个Promise实例,哪个实例最先执行完,就返回哪个结果。

    相关文章

      网友评论

          本文标题:web前端ES6/7/8新特性

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