ES6相关面试总结——前端知识(第十五部分)

1、es6 是什么

     新一代的js 语言标准,对其核心做了升级优化,更加适合大型应用开发。

2、箭头函数优缺点

     优点: 1.代码优化     2.this 指向不会变动,永远指向其父元素  

     缺点: 1.没有arguments 参数   2.不能通过 apply call bind改变this指向

    不能用箭头函数的场景: 1.构造函数  2.对象原型  3.对象方法

3、箭头函数怎么获取arguments : 可以使用es6 的解构语法来代替

4、let const var 区别

     相同作用域下,let const 不能重复声明,而var 可以

     var 可以跨块,let  const 不能

     const 定义的常量不能改变,并且必须初始化(注:const 定义的对象,是可以允许修改其属性值的,const 定义的数组,其元素可以被改变。 可以用Object.freeze()来冻结就不可以修改了)

5、es6 对字符串做了哪些升级优化

    新增了模板字符串

    新增方法

              inclueds()  判断是否包含某字符串 返回true/false   

              startsWith() 检测是否以指定字符串开始 返回true/false

              endWith() 检测是否以指定字符串结束 返回true/false

              repeat() 重复字符串多少遍

              padstart() 从头部补全字符串

              padend() 从尾部补全字符串

6、数组方面的优化升级

      数组结构赋值

       扩展运算符 …

       新增的方法

                find()找到符合条件的第一个元素,并返回,没找到返回 undifined

                includes() 查看是否包含某元素 

                fill()用新元素替换数组内元素

                flat() 扁平化数组

  7、number 数值方面的优化升级

       isFinite() 判断有限数

       isInteger() 判断是否为整数

       isNaN() 判断一个值是否为NaN

8、 对象方面的优化升级

      可以直接以变量形式声明

      对象的解构赋值

      对象的扩展运算符

      新增的方法:

                object.is() 接收两个参数,判断两个参数值以及类型,是否相等,返回true/false

                object.assign()将原对象所有的属性,复制到目标对象,(如果后面的参数有一个不是对象,就会抛出typeerror 错误)

                      let obj1 = {a:1}

                      let obj2 = {b:2}

                      consolelog(object.assign({},obj1,obj2)) // {a:1,b:2}

                object.setPrototypeof() 同 proto 设置当前对象的prototype对象

                object.getPrototypeof() 同 proto 读取当前对象的prototype对象

                object.keys() 获取所有键名

                object.values()获取所有键值

                objcet.entries()获取所有键值对数组

9、函数方面的优化升级

      箭头函数

      双冒号运算符::    用来取代,bind/call/apply

10、symblo 是什么?有什么作用?

        es6 引入的新的数据类型,表示独一无二的值

11、set 是什么?有什么作用?

        是array 的一种新的数据结构,它的成员都是唯一的。(这个特性可以实现数组去重)

 12、Map()是什么?(map 的遍历顺序是插入顺序)

        是es6 引入的一种新的数据结构,类似于对象,但是键名不仅仅可以是字符串,它可以是任何类型。

13、proxy 

         作用:用于创建一个对象的代理,从而实现基本操作的拦截和定义。可以理解成是一种拦截器,在目标对象之前设一层拦截,想要访问必须先通过该拦截

        用法: const p = new Proxy(target, handler)

                    target: 要使用proxy 包装的目标对象

                    handler:以函数作为属性的对象

        常用的拦截方法:

                    apply:拦截函数调用的操作

                    get:拦截对象属性的读取

                    set:拦截对象属性的设置

                     更多es6 新特性 之 Proxy, 这次彻底搞懂 – 掘金

14、promise

        理解: es6 新引入的构造器,用来优化异步代码。解决‘回调地狱’,可读性更高,可以链式调用。

        优点:1、可以链式调用,减低编码难度,2、代码可读性增强。3、对象的状态不受外界影响,状态一旦改变,就不会在变

        promise有3种状态:1、pending(进行中),  2、fulfilled(成功)  3、rejected(失败)     

       状态的缺点: 1、无法取消  2、当pending 时,无法得知当前的状态,时刚刚开始还是即将完成。

     then方法: 接受两个函数作为参数,1:promise 成功的回调。2:promise 失败的回调

                        特点: 1、通过.then添加的回调。不论什么时候,都会被调用。(js 常规写法种,如果未执行完成,就不会调用。)2、可以多次调用 

 15、for…in  和for … of 的区别

         for in 一般遍历对象的key .for of 一般遍历数组的value。

16、async 函数是什么?有什么作用

        async 可以理解成,promise 的语法糖,配合promise 更好的实现异步操作。

17、什么是class,作用是什么?extends是什么作用

         可以看作是es5 生成实例对象的构造函数的语法糖。

         作用:定义了类 的概念,写法更加清晰,更像一种面向对象编程

         extends: 新引入的关键字,本质还是构造函数+原型链的继承, 作用是:class 可以通过extends 实现继承。

        class 和es5 的构造函数的区别:1、类内部定义的所有方法,都不可枚举。2、class 必须用new 命令操作。3、class 不存在变量提升,必须先定义才能实例化。4、继承机制不同

18、module、exprot、import   

        是es6 统一前端模块化的设计思想和实现。

        exprot作用:用于从模块中导出内容(函数、对象、原始值),通过import 语句导入使用它们

        exprot default: 用于文件的默认导出接口,一个文件只能有一个

        commonJS 种的reqire(),exprots 组合 与  es module 种的import,export组合
        

物联沃分享整理
物联沃-IOTWORD物联网 » ES6相关面试总结——前端知识(第十五部分)

发表回复