JavaScript 知识大纲
一、数据类型
1.1 JavaScript 有哪些数据类型,它们的区别?
1.2 数据类型检测的方式有哪些?
1.3 判断数组的方式有哪些?
1.4 null 和 undefined 区别?
1.5 instanceof 操作符的实现原理及实现?
1.6 为什么 0.1 + 0.2!== 0.3,如何让其相等?
1.7 == 操作符的强制类型转换规则?
1.8 Object.is () 与比较操作符 “===”、“==” 的区别?
1.9 object.assign 和扩展运算法是深拷贝还是浅拷贝,两者区别?
1.10 typeof null 的结果是什么,为什么?
1.11 isNaN 和 Number.isNaN 函数的区别?
1.12 其他值到字符串的转换规则?
1.13 其他值到数字值的转换规则?
1.14 其他值到布尔类型的值的转换规则?
1.15 JavaScript 中如何进行隐式类型转换?
1.16 如何获取安全的 undefined 值?
1.17 typeof NaN 的结果是什么?
1.18 || 和 && 操作符的返回值?
1.19 + 操作符什么时候用于字符串的拼接?
1.20 什么是 JavaScript 中的包装类型?
1.21 为什么会有 BigInt 的提案?
二、ES6
2.1 let、const、var 的区别?
2.2 箭头函数与普通函数的区别?
2.3 const 对象的属性可以修改吗?
2.4 如果 new 一个箭头函数会怎么样?
2.5 箭头函数的 this 指向哪里?
2.6 对 rest 参数的理解?
2.7 ES6 中模板语法与字符串处理?
2.8 扩展运算符的作用及使用场景?
2.9 Proxy 可以实现什么功能?
2.10 对对象与数组的解构的理解?
2.11 如何提取高度嵌套的对象里的指定属性?
三、JavaScript 基础
3.1 new 操作符的实现原理?
3.2 数组有哪些原生方法?
3.3 什么是 DOM 和 BOM?
3.4 对类数组对象的理解,如何转化为数组?
3.5 对 AJAX 的理解,实现一个 AJAX 请求?
3.6 JavaScript 为什么要进行变量提升,它导致了什么问题?
3.7 forEach 和 map 方法有什么区别?
3.8 map 和 Object 的区别?
3.9 JavaScript 脚本延迟加载的方式有哪些?
3.10 JavaScript 类数组对象的定义?
3.11 为什么函数的 arguments 参数是类数组而不是数组?如何遍历类数组?
3.12 ES6 模块与 CommonJS 模块有什么异同?
3.13 如何判断一个对象是否属于某个类?
3.14 for...in 和 for...of 的区别?
3.15 数组的遍历方法有哪些?
3.16 map 和 weakMap 的区别?
3.17 常用的正则表达式有哪些?
3.18 对 JSON 的理解?
3.19 Unicode、UTF-8、UTF-16、UTF-32 的区别?
3.20 常见的位运算符有哪些?其计算规则是什么?
3.21 escape、encodeURI、encodeURIComponent 的区别?
3.22 什么是尾调用,使用尾调用有什么好处?
3.23 常见的 DOM 操作有哪些?
3.24 use strict 是什么意思?使用它区别是什么?
3.25 如何使用 for...of 遍历对象?
3.26 ajax、axios、fetch 的区别?
3.27 JavaScript 有哪些内置对象?
3.28 强类型语言和弱类型语言的区别?
3.29 解释性语言和编译型语言的区别?
四、原型与原型链
4.1 对原型、原型链的理解?
4.2 原型链指向?
4.3 原型修改、重写?
4.4 原型链的终点是什么?如何打印出原型链的终点?
4.5 如何获得对象非原型链上的属性?
五、执行上下文 / 作用域链 / 闭包
5.1 对闭包的理解?
5.2 对作用域、作用域链的理解?
5.3 对执行上下文的理解?
六、this/call/apply/bind
6.1 对 this 对象的理解?
6.2 call () 和 apply () 的区别?
6.3 实现 call、apply 及 bind 函数?
七、异步编程
7.1 对 Promise 的理解?
7.2 Promise 的基本用法?
7.3 对 async/await 的理解?
7.4 async/await 对比 Promise 的优势?
7.5 异步编程的实现方式?
7.6 setTimeout、Promise、Async/Await 的区别?
7.7 Promise 解决了什么问题?
7.8 Promise.all 和 Promise.race 的区别及使用场景?
7.9 await 到底在等啥?
7.10 async/await 的优势?
7.11 async/await 如何捕获异常?
7.12 并发与并行的区别?
7.13 什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题?
7.14 setTimeout、setInterval、requestAnimationFrame 各有什么特点?
八、面向对象
8.1 对象创建的方式有哪些?
8.2 对象继承的方式有哪些?
九、垃圾回收与内存泄漏
9.1 浏览器的垃圾回收机制?
9.2 哪些情况会导致内存泄漏?