JavaScript面试题
光影博客收录的JavaScript面试题高频题与参考解析,搜索时也会写成JS面试题、JS八股、JavaScript八股。下面是站内已有题目,可继续在面试题里按这个词刷。
在面试题中打开共 15 道,本页展示 12 道
var、let、const 三者有什么区别?
var 函数作用域+变量提升+可重复声明;let 块级作用域+暂时性死区;const 块级作用域+不可重新赋值但引用类型内容可变。推荐 const 优先,需重新赋值用 let。
什么是闭包 (Closure)?有哪些应用场景?
闭包是内部函数引用外部函数变量的特性,即使外部函数已返回。应用:数据封装、柯里化、防抖节流、模块模式。注意避免内存泄漏。
JavaScript 事件循环 (Event Loop) 的执行机制?
单线程通过事件循环处理异步:同步代码 → 微任务(Promise.then/MutationObserver)→ 宏任务(setTimeout/I/O)。每轮宏任务后清空所有微任务。
Promise 与 async/await 的关系和区别?
Promise 用 then/catch 链式处理异步;async/await 是语法糖,让异步代码像同步编写。await 只能在 async 函数中使用,底层仍是 Promise。
原型链与继承是如何工作的?
每个对象有 __proto__ 指向构造函数的 prototype,形成原型链。属性查找沿链向上直到 null。ES6 class 本质是原型继承的语法糖。
深拷贝与浅拷贝有什么区别?
浅拷贝只复制第一层引用(Object.assign/展开运算符),深拷贝递归复制所有层级。方案:structuredClone()、JSON 序列化(有限制)、递归实现。
this 的指向有哪些规则?
默认指向全局(严格模式 undefined);对象方法指向调用者;箭头函数继承外层 this;call/apply/bind 可显式绑定;new 指向新实例。
防抖 (Debounce) 与节流 (Throttle) 的区别?
防抖:事件停止触发后延迟执行(搜索框输入);节流:固定间隔内只执行一次(滚动事件)。防抖用 clearTimeout + setTimeout,节流用时间戳或定时器。
Label的作用是什么,是怎么用的?
label 标签来定义表单控制间的关系 , 当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。 <label for='Name'>Number:</label> <input type= “ text “ name='Name' id='Name'/> <label>Date:<input type='text' name='B'/></label> 注意:label的for属性值要与后面对应的input标签id属性值…
iframe有那些缺点?
*iframe 会阻塞主页面的 Onload 事件; * 搜索引擎的检索程序无法解读这种页面,不利于 SEO; *iframe 和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。 使用 iframe 之前需要考虑这两个缺点。如果需要使用 iframe ,最好是通过 javascript 动态给 iframe 添加 src 属性值,这样可以绕开以上两个问题。 纠错 收藏
常见的浏览器内核有哪些?
view sourceprint? 1. Trident 内核: IE,MaxThon,TT,The World,360, 搜狗浏览器等。 [ 又称 MSHTML] 2. Gecko 内核: Netscape6 及以上版本, FF,MozillaSuite/SeaMonkey 等 3. Presto 内核: Opera7 及以上。 [Opera 内核原为: Presto ,现为: Blink;] 4. Webkit 内核: Safari…
介绍一下你对浏览器内核的理解?
主要分成两部分:渲染引擎 (layout engineer 或 Rendering Engine) 和 JS 引擎。 渲染引擎:负责取得网页的内容( HTML 、 XML 、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。 JS 引擎则:…