🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 题1、请说出ES6中有哪些新特性? 答:let、const、箭头函数、map 和 set、模块化、面向对象编程(class)、promise、async...await...、...展开运算符、数组操作、字符串操作等。 # 题2、什么是 Map? 答: 是一种键值对存储的数据结构。 # 题3、Map 和 对象 有什么区别? 答: 对象只能用字符串作为键,而 Map 可以使用任意类型来当成键。 代码演示: ~~~ // 键是字符串 let people = {    'name': 'tom',    'age': 10,    '12': 'hello' } ​ // 任意类型做为键 let m = new Map() m.set( 'name',  'tom' ) m.set( {age:10}, 100 )   // 用对象做为键 m.get( {age:10 })  // 100 ~~~ # 题4、什么是 Set? 答: 为 JS 中添加了一种新的数据类型:集合。 集合的特点: 1. 能保存多个数据 2. 集合中的值不可以重复 # 题5、什么是箭头函数?和普通函数有什么区别? 答: 箭头函数是 ES6 中新出的一种定义函数的方法,这种方法在定义函数时使用 => 而不是 function 所以叫做箭头函数。 箭头函数和普通函数的区别是: 函数中的 this 的指向不同: 箭头函数: this 代表的是定义函数时所在的对象。 普通函数: this 代表调用这个函数时所在的对象。 # 题6、let 、 var 和 const 的用途和区别? 答: const 是用来定义常量的(值一旦定义了就不可以改变的量)。 let 和 var 是定义变量的。 let 和 var 的区别: 1. let 可以定义全局变量、局部变量和块级变量,而 var 能定义全局变量和局部变量。 2. let 不允许重复定义同名变量(报错),而 var 可以重复定义同名的变量(覆盖)。 3. let 不允许变量提升(先定义变量,然后再使用),而 var 允许变量提升(先使用,后定义) # 题7、 JS 中有几种实现模块化的思路? ​ ​ 答: JS 中的模块化有三种实现思路: 1. node 中模块化技术(require 来引入,module.export 来导出) 2. ES6 中的模块化技术(import ... from.. 来引入, export default 来导出) 3. 传统的模块化: CMD/AMD # 题8、前端使用哪种模块化?后端使用哪种模块化? ​ ​ 答: 前端(Vue、React)使用 ES6 的模块化语法。 (import...from) 后端(Node) 使用 node 中的模块化语法。(require) # 题9、ES6 中的模块化是怎么使用的? ​ ​ 答:import ... from 用来导入, export default 用来导出。 因为模块化实现的方案太多,比较乱,所以 ES6 提供了模块化希望能够统一模块化技术。但目前还没有完全统一。 注意:ES6 目前需要配合 Babel + Webpack 打包才能使用,否则默认都不支持。 代码演示一:一个一个导出 ~~~ a.js export function hello() { } export const name = 'tom' ​ main.js import {hello, name} from './a.js' hello() ~~~ 代码演示二:一次导出所有 ~~~ a.js function hello() { } const name = 'tom' ​ export default {    hello,    name } ​ main.js import {hello, name} from './a.js' hello() ~~~