在准备面试时,由于没有那么多的时间和精力,不能把所有知识点复习地面面俱到。再加上网上面试题目琳琅满目,更不知道哪些知识点需要重点复习。
一共总结了20个JavaScript知识点
总的来说,对于新人,不要把太多的精力放在框架上面了,框架固然重要,但我认为基础更加重要,某种程度上它能决定你的高度:
简单的题目就不给出答案了,我觉得有价值的知识点,就附上答案或者个人的总结吧
1.数据类型⭐⭐⭐
•基本类型
•引用类型
举例:Symbol的作用
2.判断变量的类型 ⭐⭐⭐
•typeof
•instanceof及原理
•Object.toString().call()及原理[[class]]
3.数据类型转换 ⭐⭐
•相等==和全等===
•强制转换和隐式转换
•包装类型
4.原型和原型链⭐⭐⭐
举例:描述构造函数、实例和原型之间的关系
5.闭包 ⭐⭐⭐
•优缺点
6.call/apply/bind ⭐⭐⭐
7.DOM事件流和事件委托 ⭐⭐⭐
•捕获、冒泡
•事件委托及好处
8.cookie和storage ⭐⭐⭐
•cookie的构成
•localStorage和sessionStorage
举例:cookie的HTTPOnly
9.数组/对象常见的方法 ⭐⭐
•Array:slice/splice/concat/filter/map/reduce
•Object:keys/assign
举例:改变原数组的方法
10.new对象时内部做了什么 ⭐
11.防抖和节流 ⭐
//函数防抖: 任务频繁触发的情况下,
//只有任务触发的间隔超过指定间隔的时候,任务才会执行。
function debounce(func, delay) {
let timer = null
return function(...args) {
if(timer) clearTimeout(timer)
timer = setTimeout(() => {
func.apply(this, args)
}, delay)
}
}
//函数节流: 指定时间间隔内只会执行一次任务
function throttle(fn, interval = 200) {
let canRun = true;
return function() {
if(!canRun) return;
canRun = false;
setTimeout(() => {
fn.apply(this, arguments);
canRun = true;
}, interval);
};
}
12.requestAnimationFrame ⭐⭐
•优势
13.this指向 ⭐⭐
14.作用域链 ⭐
15.let/var/const ⭐⭐⭐
16.异步编程:Promise和async await ⭐⭐⭐
•内部状态
•Promise.race和Promise.all
17.箭头函数 ⭐⭐
18.JavaScript运行机制 ⭐⭐⭐
•单线程、解释性语言
•事件循环
•宏任务/微任务