前端面试题整理—ES6篇

1、es5和es6的区别,说一下你所知道的es6

  ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化

  ECMAScript6,即ES6,是ECMAScript的第六次修订,于2015年完成,也称ES2015

  ES6是继ES5之后的一次改进,相对于ES5更加简洁,提高了开发效率

  ES6新增的一些特性:

  1)let声明变量和const声明常量,两个都有块级作用域
  ES5中是没有块级作用域的,并且var有变量提升,在let中,使用的变量一定要进行声明

  2)箭头函数
  ES6中的函数定义不再使用关键字function(),而是利用了()=>来进行定义

  3)模板字符串
  模板字符串是增强版的字符串,用反引号(`)标识,可以当作普通字符串使用,也可以用来定义多行字符串

  4)解构赋值
  ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值

  5)for of循环
  for...of循环可以遍历数组、Set和Map结构、某些类似数组的对象、对象,以及字符串

  6)import、export导入导出
  ES6标准中,Js原生支持模块(module)。将JS代码分割成不同功能的小块进行模块化,将不同功能的代码分别写在不同文件中,各模块只需导出公共接口部分,然后通过模块的导入的方式可以在其他地方使用

扫描二维码关注公众号,回复: 5611047 查看本文章

  7)set数据结构
  Set数据结构,类似数组。所有的数据都是唯一的,没有重复的值。它本身是一个构造函数

  8)... 展开运算符
  可以将数组或对象里面的值展开;还可以将多个值收集为一个变量

  9)修饰器 @
  decorator是一个函数,用来修改类甚至于是方法的行为。修饰器本质就是编译时执行的函数

  10)class 类的继承
  ES6中不再像ES5一样使用原型链实现继承,而是引入Class这个概念

  11)async、await
  使用 async/await, 搭配promise,可以通过编写形似同步的代码来处理异步流程, 提高代码的简洁性和可读性
  async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成

  12)promise
  Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理、强大

  13)Symbol
  Symbol是一种基本类型。Symbol 通过调用symbol函数产生,它接收一个可选的名字参数,该函数返回的symbol是唯一的

  14)Proxy代理
  使用代理(Proxy)监听对象的操作,然后可以做一些相应事情

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

  var声明变量可以重复声明,而let不可以重复声明

  var是不受限于块级的,而let是受限于块级

  var会与window相映射(会挂一个属性),而let不与window相映射

  var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错

  const声明之后必须赋值,否则会报错

  const定义不可变的量,改变了就会报错

  const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错

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

  (1)用了箭头函数,this就不是指向window,而是父级(指向是可变的)

  (2)不能够使用arguments对象

  (3)不能用作构造函数,这就是说不能够使用new命令,否则会抛出一个错误

  (4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数

4、ES6的模板字符串有哪些新特性?

  基本的字符串格式化。将表达式嵌入字符串中进行拼接。用${}来界定

  在ES5时我们通过反斜杠()来做多行字符串或者字符串一行行拼接。ES6反引号(``)就能解决

猜你喜欢

转载自www.cnblogs.com/theblogs/p/10575845.html