前端面试必备:深浅拷贝、堆栈内存、箭头函数与闭包解析

需积分: 9 0 下载量 121 浏览量 更新于2024-07-17 收藏 246KB DOCX 举报
"前端面试题整理" 前端面试中,经常会涉及到一些核心概念和技术,下面将对这些关键知识点进行深入解析。 1. 深浅拷贝 深拷贝和浅拷贝是JavaScript中用于复制对象的两种不同方式。浅拷贝仅仅复制对象的引用,而深拷贝则会创建一个全新的对象,拥有与原对象相同的数据,但它们之间并不共享内存。当对深拷贝的对象进行修改时,不会影响到原始对象。浅拷贝常见的实现方式有`Object.assign()`和扩展运算符`...`,而深拷贝可以通过`JSON.parse(JSON.stringify(obj))`或`lodash`库的`_.cloneDeep()`实现。 2. 堆栈内存 栈内存主要存放基本数据类型的变量,如数字、字符串、布尔值,由系统自动分配和释放,内存管理简单。而堆内存则用于存储复杂的数据结构,如对象和数组,其内存分配和释放需要程序员手动处理。栈内存空间有限,但访问速度快;堆内存空间大,但访问速度相对较慢。 3. 箭头函数的`this`指向 箭头函数没有自己的`this`上下文,它会继承所在作用域的`this`值,这与传统函数的`this`绑定规则不同。这意味着箭头函数在多层对象嵌套中,其`this`始终指向最外层对象,而不是函数自身。 4. 闭包 闭包是一种特殊的函数,它可以访问并操作定义在其外部但不在当前作用域内的变量。闭包常用于实现私有变量,防止外部直接访问或修改。然而,由于闭包可能导致变量无法被垃圾回收,所以在不必要时应当及时释放闭包引用,避免内存泄漏。 5. `sessionStorage`、`localStorage`与`cookie` - 存在时间:`sessionStorage`在浏览器会话结束时清除,`localStorage`直到被手动清除才会消失,`cookie`可设置过期时间。 - 存储量大小:`sessionStorage`和`localStorage`一般允许存储5MB,`cookie`通常限制在4KB左右。 - 使用方法:`sessionStorage`、`localStorage`提供`getItem`、`setItem`等接口操作数据,`cookie`通过设置HTTP头部`Set-Cookie`来添加和管理。 6. JSONP跨域 JSONP(JSON with Padding)是一种解决跨域问题的方式,通过动态插入`<script>`标签,利用其可以加载跨域资源的特性,配合服务端动态返回包裹在回调函数中的JSON数据,从而实现数据交互。 7. `cookie`与`session`的应用场景 - `session`适用于安全性要求较高的场景,如银行、金融、支付类网站,因为session数据存储在服务器端,减少了安全风险,但会消耗服务器资源,且存活时间较短。 - `cookie`则常用于保持用户登录状态、个性化设置等,因为其存储在客户端,方便读取,但数据安全性较低,容易受到XSS攻击,且存储量有限。 以上内容涵盖了前端面试中常见的技术点,理解并掌握这些知识对于准备前端面试至关重要。