JavaScript面试高频15大知识点总结

📅 发布时间:2026/7/6 19:29:31 👁️ 浏览次数:
JavaScript面试高频15大知识点总结
作用域与作用域链· 作用域变量和函数的可访问范围包括全局作用域、函数作用域和块级作用域ES6的let/const。· 作用域链当查找变量时会从当前作用域开始逐级向上查找直到全局作用域形成一条链条。闭包· 定义函数嵌套函数内部函数可以访问外部函数的变量即使外部函数执行完毕其变量仍被内部函数引用而不会被垃圾回收。· 应用封装私有变量、模块化、防抖节流函数等。· 注意闭包可能导致内存泄漏需及时释放引用。原型与原型链· 原型每个函数都有prototype属性每个对象都有__proto__属性指向其构造函数的原型。· 原型链当访问对象属性时若自身没有则沿着__proto__链向上查找直到Object.prototype。· 继承通过原型链实现对象之间的属性共享。this指向· 默认绑定独立函数调用时this指向全局对象浏览器中为window严格模式为undefined。· 隐式绑定作为对象方法调用this指向该对象。· 显式绑定通过call、apply、bind强制指定this。· new绑定构造函数中的this指向新创建的实例。· 箭头函数没有自己的this继承外层作用域的this。事件循环 (Event Loop)· JavaScript单线程通过事件循环机制处理异步任务。· 任务队列分为宏任务script、setTimeout、setInterval、I/O和微任务Promise.then、async/await、MutationObserver。· 执行顺序先执行一个宏任务然后清空所有微任务再执行下一个宏任务如此循环。Promise 与异步编程· Promise代表一个异步操作的最终完成或失败有三种状态pending进行中、fulfilled已成功、rejected已失败。· 常用方法then()、catch()、finally()、Promise.all()、Promise.race()。· 链式调用解决回调地狱使异步代码更清晰。async/await· 本质基于Promise的语法糖让异步代码看起来像同步代码。· 使用async函数返回Promiseawait等待Promise完成。· 错误处理通过try/catch捕获异常。ES6 常用新特性· let/const块级作用域不存在变量提升const声明常量。· 解构赋值快速提取数组或对象中的值。· 箭头函数简洁写法没有自己的this。· 模板字符串使用反引号 和${}嵌入表达式。· 扩展运算符…用于数组或对象展开。· Set/Map新的数据结构。· 模块化import/export。· Class类的语法糖。· Proxy/Reflect元编程能力。数据类型与类型判断· 基本类型number、string、boolean、null、undefined、symbolES6、bigintES2020。· 引用类型object包含array、function、date等。· 类型判断· typeof判断基本类型除null外引用类型返回object或function。· instanceof判断对象是否属于某个构造函数的实例。· Object.prototype.toString.call()最准确的判断方式返回[object Type]。深浅拷贝· 浅拷贝只复制对象第一层属性引用类型仍共享地址。方法Object.assign()、扩展运算符…、Array.prototype.slice()。· 深拷贝递归复制所有层级生成全新对象。方法JSON.parse(JSON.stringify(obj))有局限性如忽略函数、undefined、Symbol、循环引用、递归实现、使用structuredClone现代浏览器、第三方库如lodash的cloneDeep。防抖与节流· 防抖触发事件后等待一段时间再执行若在等待期间再次触发则重新计时。适用场景输入框搜索、窗口resize。· 节流规定时间内只执行一次即使多次触发。适用场景滚动加载、鼠标移动事件。数组常用方法· 增删改push、pop、shift、unshift、splice。· 遍历forEach、map、filter、reduce、some、every。· 查找indexOf、find、findIndex、includes。· 排序反转sort、reverse。· 连接拆分concat、join、slice。· 重点map返回新数组forEach无返回值reduce累积计算。事件委托/事件代理· 原理利用事件冒泡将子元素的事件处理委托给父元素统一管理。· 优点减少事件绑定数量提升性能动态添加的子元素也能自动拥有事件。· 实现通过e.target判断实际触发元素。跨域解决方案· 同源策略协议、域名、端口任一不同即跨域。· 常用方案· JSONP利用垃圾回收机制· 目的自动管理内存回收不再使用的对象。· 算法· 引用计数记录对象被引用的次数当次数为0时回收。缺点无法处理循环引用。· 标记清除从根对象全局对象出发标记所有可达对象清除未被标记的对象。现代浏览器主要采用此方法。· 优化合理使用变量及时解除引用有助于垃圾回收。希望这十五条知识点能帮助你在JavaScript面试中游刃有余如果有任何疑问或补充欢迎留言讨论。