#### 变量和类型
1. JavaScript规定了几种类型
2. JavaScript对象的底层数据结构是什么
3. Symbol类型在实际开发中的应用,可手动实现一个简单的Symbol
4. JavaScript中的变量在内存中的具体存储形式
5. 基本类型对应的内置对象,以及他们之间的装箱拆箱操作
6. 理解值类型和引用类型
7. null和undefined的区别
8. 至少可以说出三种判断JavaScript数据类型的方式,以及他们的优缺点,如何准确的判断数组类型
9. 可能发生隐式类型转换的场景以及转换原则,应如何避免或巧妙应用
10. 出现小数精度丢失的原因,JavaScript可以存储的最大数字、最大安全数字,JavaScript处理大数字的方法,避免精度丢失的方法
#### 原型和原型链
1. 理解原型设计模式以及JavaScript中的原型规则
2. instanceof的底层实现原理 ,手动实现一个instanceof
3. 实现继承的几种方式以及他们的优缺点
4. 至少说出一种 开源项目如Node中应用原型继承的案例
5. 可以描述new一个对象的详细过程,手动实现一个new操作符
6. 理解es6 class构造以及继承的底层实现原理
#### 作用域和闭包
1. 理解词法作用域和动态作用域
2. 理解JavaScript的作用域和作用域链
3. 理解JavaScript的执行上下文栈,可以应用堆栈信息快速定位问题
4. this的原理以及几种不同使用场景的取值
5. 闭包的实现原理和作用,可以列举几个开发中闭包的实际应用
6. 理解堆栈溢出和内存泄露的原理 ,如何防止
7. 如何处理循环的异步操作
8. 理解模块化解决的实际问题,可列举几个模块化方案并理解其中原理
#### 执行机制
1. 为何try里面放return,finally还会执行,理解其内部机制
2. JavaScript如何实现异步编程,可以详细描述EventLoop机制
3. 宏任务和微任务分别有哪些
4. 可以快速分析一个复杂的异步嵌套逻辑,并掌握分析方法
5. 使用Promise实现串行
6. Node与浏览器EventLoop的差异
7. 如何在保证页面运行流畅的情况下处理海量数据
#### 语法和API
1. 理解ECMAScript和JavaScript的关系
2. 熟练运用ES5、ES6提供的语法规范
3. 熟练掌握JavaScript提供的全局对象、全局函数、全局属性
1. 全局对象:Date Math
2. 全局函数:decodeURI isNaN
3. 全局属性:Infinity undefined
4. 熟练使用map、reduce、filter等高阶函数解决问题
5. setTinterval需要注意的点,使用settimeout实现setInterval
6. JavaScript提供的正则表达式API,可以使用正则表达式( 邮箱校验、URL解析、去重等 )解决常见问题
7. JavaScript异常处理的方式,统一的异常处理方案
8. Promise
9. AJAX