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组合
commonjs | module |
reqire() 需要谁导入谁,返回值对象 | import? ?本质是关键字 |
exports 本质对象,想暴露谁,就添加属性exports (=nodeJs 中的module.exprots) | exprots 本质是关键字 |
???????? ? ? ? ? ?
? ? ? ??
? ? ? ?
? ?
? ?
? ?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!