面试题-ES6篇

674 阅读2分钟

1. 块级作用域(必会)

  • 在ES5中,有全局作用域和函数作用域,以var定义的变量没有块级作用域的概念,可以跨块访问,不能跨函数访问;
  • 在ES6中,块级作用域指的是在大括号或者if、else、for、while等语句中,以let定义的变量或const定义的常量只能在块级作用域里访问且不存在变量提升和重复声明,此外const定义的常量必须初始化赋值且不能修改。

2. Var、let、const区别?(const定义对象和数组后可以修改) (必会)

  • Let、const有块级作用域、暂时性死区;
  • Let、const不存在变量提升和重复性声明;
  • Let、const声明的全局变量不会挂在顶层对象下面;
  • Let定义变量,const定义常量且不可改变。

3. 构造函数和普通函数的区别 (问到过,背一下)

  • 构造用new调用;
  • 构造内部可以使用this,普通不建议,会指向window;
  • 构造没有return返回值
  • 构造首字母大写。

4. 箭头函数和普通函数的区别(问到过,背一下)

  • 箭头函数语法简单,清晰;
  • 箭头函数没有prototype,所以本身没this;
  • 箭头函数不会创建自己的this;
  • Call/apply/bind无法改变this指向;
  • 不能作为构造函数使用;

5. es6的新特性(必会,至少背几个吧)

  • Let和const
  • 解构赋值
  • Includes可以判断一个数组是否包含一个指定的值,包含返回true,反之false
  • 字符串、数值、函数、数组、对象的扩展
  • Module导入模块
  • Promise和async的运用
  • Symbol
  • Set和map
  • Class

6. Promise(肯定得了解阿,适当背一下)

  • Promise是es6提出的异步编程解决方案,解决了异步编程的回调地狱问题;
  • Promise是一个构造函数,需要new关键字来生成它的实例对象;
  • Promise接受一个函数作为参数,函数中的代码在new promise的时候会立即执行,我们可以再这里执行异步操作,并存在两个参数resolve和reject,也是函数,用来标记异步执行的状态,通过.then回调异步完成的回调,.catch则是失败的回调;
  • Finally方法是最后都会执行的方法;
  • all方法是几个条件都达成才能返回成功;
  • Rice方法是几个条件都不满足才返回失败。