es6 相关面试总结

简介: 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组合

相关文章
|
4月前
|
前端开发
【面试题】如何使用ES6 ... 让代码优雅一点?
【面试题】如何使用ES6 ... 让代码优雅一点?
|
4月前
|
JavaScript 前端开发
【面试题】 JS手写ES6的Object.create方法
【面试题】 JS手写ES6的Object.create方法
|
4月前
|
设计模式 前端开发 算法
【面试题】 ES6 类聊 JavaScript 设计模式之行为型模式(二)
【面试题】 ES6 类聊 JavaScript 设计模式之行为型模式(二)
|
1天前
|
前端开发 JavaScript
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
|
2月前
|
JSON 前端开发 数据格式
|
4月前
|
索引
【ES6新语法】let、const、var的区别,你学会了面试官没话说
【ES6新语法】let、const、var的区别,你学会了面试官没话说
|
4月前
|
存储 前端开发 JavaScript
前端面试题整理 (ES6篇)
前端面试题整理 (ES6篇)
|
4月前
|
存储 前端开发 JavaScript
ES6 面试题
ES6 面试题
|
4月前
|
前端开发 JavaScript Java
【面试题】 ES6中将非数组转换为数组的三种方法
【面试题】 ES6中将非数组转换为数组的三种方法
|
4月前
|
存储 前端开发 JavaScript
【面试题】ES6 如何将 Set 转化为数组
【面试题】ES6 如何将 Set 转化为数组