es6 相关面试总结

2023-12-13 03:31:48

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组合

commonjsmodule
reqire() 需要谁导入谁,返回值对象import? ?本质是关键字
exports 本质对象,想暴露谁,就添加属性exports (=nodeJs 中的module.exprots)exprots 本质是关键字

???????? ? ? ? ? ?

? ? ? ??

? ? ? ?

? ?

? ?

? ?

文章来源:https://blog.csdn.net/weixin_41807530/article/details/134713862
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。