返回文章

前端面试:JavaScript 基础

1. JS 的数据类型有哪些? 基本类型有 string 、 number 、 boolean 、 null 、 undefined 、 symbol 、 bigint ;引用类型主要是 object ,数组、函数、日期等都属于对象。 2. null 和 undefined 的区别? undefined 表示变量声明了但没有赋值,或对象属性不存在; null 表示人为设置为空值。简单说, undefined 更偏“未定义”, null

发布于 2026-06-11阅读量 70字数 961
前端面试

补充一、JavaScript 基础

1. JS 的数据类型有哪些?

基本类型有 stringnumberbooleannullundefinedsymbolbigint;引用类型主要是 object,数组、函数、日期等都属于对象。

2. nullundefined 的区别?

undefined 表示变量声明了但没有赋值,或对象属性不存在;null 表示人为设置为空值。简单说,undefined 更偏“未定义”,null 更偏“空对象/空结果”。

3. 深拷贝和浅拷贝区别?

浅拷贝只复制第一层,内部引用对象仍然共享;深拷贝会递归复制所有层级。项目里简单对象可用 structuredClone,复杂场景要注意函数、日期、Map、循环引用等问题。

4. 原型链是什么?

每个对象都有原型,对象访问属性时,如果自身没有,会沿着原型链向上查找,直到 null。JS 的继承本质上就是基于原型链实现的。

5. 闭包是什么?有什么用?

闭包是函数可以访问其外层作用域变量,即使外层函数已经执行完。常用于封装私有变量、函数柯里化、防抖节流、保存状态。注意闭包长期持有引用时可能造成内存占用。

6. 事件循环是什么?

JS 是单线程执行,异步任务通过事件循环调度。同步代码先执行,微任务如 Promise.thenqueueMicrotask 再执行,最后执行宏任务如 setTimeout、事件回调等。

7. 宏任务和微任务有哪些?

宏任务常见有 setTimeoutsetInterval、DOM 事件、网络回调;微任务常见有 Promise.thenMutationObserverqueueMicrotask。微任务会在当前宏任务结束后、页面渲染前尽快清空。

8. Promise 的理解?

Promise 用来处理异步流程,有 pendingfulfilledrejected 三种状态,状态一旦改变不可逆。async/await 是基于 Promise 的语法糖,让异步代码更像同步代码。

9. 箭头函数和普通函数区别?

箭头函数没有自己的 this,会捕获外层 this;不能作为构造函数;没有 arguments。普通函数的 this 由调用方式决定。

10. 防抖和节流手写思路?

防抖用定时器,每次触发先清掉旧定时器,停止触发一段时间后执行;节流记录上次执行时间或使用定时器,在固定间隔内只执行一次。

回到目录

评论留言

登录后可留言和点赞
一片冰心黔ICP备2026012107号