es6总结

1、var、let、const之间的区别

var声明变量可以重复声明,而let不可以重复声明 var是不受限于块级的,而let是受限于块级 var会与window相映射(会挂一个属性),而let不与window相映射 var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错 const声明之后必须赋值,否则会报错 const定义不可变的量,改变了就会报错 const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错

2、使用箭头函数应注意什么?

(1)用了箭头函数,this就不是指向window,而是父级(指向是可变的) (2)不能够使用arguments对象 (3)不能用作构造函数,这就是说不能够使用new命令,否则会抛出一个错误 (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数

3、ES6的模板字符串有哪些新特性?并实现一个类模板字符串的功能

基本的字符串格式化。 将表达式嵌入字符串中进行拼接。 用${}来界定在ES5时我们通过反斜杠()来做多行字符串或者字符串一行行拼接。 ES6反引号(``)就能解决类模板字符串的功能

4、介绍下 Set、Map的区别?

应用场景Set用于数据重组,Map用于数据储存Set:  (1)成员不能重复 (2)只有键值没有键名,类似数组 (3)可以遍历,方法有add, delete,has Map: (1)本质上是健值对的集合,类似集合 (2)可以遍历,可以跟各种数据格式转换

5、Promise构造函数是同步执行还是异步执行,三种状态

promise构造函数是同步执行的,then方法是异步执行的 三个状态: pending、fulfilled、reject 两个过程: padding -> fulfilled、padding -> rejected当pending为rejectd时,会进入catch

6、Promise 中reject 和 catch 处理上有什么区别

reject 是用来抛出异常catch 是用来处理异常 reject 是 Promise 的方法,而 catch 是 Promise 实例的方法 reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch 网络异常(比如断网),会直接进入catch而不会进入then的第二个回调

7、forEach、for in、for of三者区别

forEach更多的用来遍历数组 for in 一般常用来遍历对象或json for of数组对象都可以遍历,遍历对象需要通过和Object.keys() for in循环出的是key,for of循环出的是value

8、说一下es6的导入导出模块

导入通过import关键字 导出通过export关键字

9、async/await对比Promise的优势

代码读起来更加同步,Promise虽然摆脱了回调地狱,但是then的链式调⽤也会带来额外的阅读负担 Promise传递中间值⾮常麻烦,⽽async/await⼏乎是同步的写法,⾮常优雅 错误处理友好,async/await可以⽤成熟的try/catch,Promise的错误捕获⾮常冗余 调试友好,Promise的调试很差,由于没有代码块,你不能在⼀个返回表达式的箭头函数中设置断点,如果你在⼀个.then代码块中使⽤调试器的步进(step-over)功能,调试器并不会进⼊后续的.then代码块,因为调试器只能跟踪同步代码的每⼀步。

10、ECMAScript6的新特性?

块级作用区域 let a = 1; 可定义常量 const PI = 3.141592654; 变量解构赋值 var [a, b, c] = [1, 2, 3]; 字符串的扩展(模板字符串) var sum =a + b ; 数 组 的 扩 展 ( 转 换 数 组 类 型 ) A r r a y . f r o m ( {a + b}; 数组的扩展(转换数组类型) Array.from(a+b;数组的扩展(转换数组类型)Array.from((‘li’)); 函数的扩展(扩展运算符) [1, 2].push(…[3, 4, 5]); 对象的扩展(同值相等算法) Object.is(NaN, NaN); 新增数据类型(Symbol) let uid = Symbol(‘uid’); 新增数据结构(Map) let set = new Set([1, 2, 2, 3]); for…of循环 for(let val of arr){}; Promise对象 var promise = new Promise(func); Generator函数 function* foo(x){yield x; return x*x;} 引入Class(类) class Foo {} 引入模块体系 export default func; async函数[ES8]

11、什么是结构赋值?

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。

12、Symbol 基本使用

ES6 引入了一种新的原始数据类型 Symbol, 表示独一无二的值。它是JavaScript 语言的第七种数据类型,是一种类似于字符串的数据类型。 Symbol 特点 Symbol 的值是唯一的,用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值