web前端ES6/7/8新特性

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新特性)