企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[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 是在定义函数时从父元素中继承过来的。(定义时绑定 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() ~~~