什么是闭包?原理与应用 什么是闭包?原理与应用闭包(Closure)是 JavaScript 中最常被提及的概念之一:它既是面试高频考点,也是诸多高级特性(如柯里化、模块化、私有变量、函数工厂等)的基础。 本文将回答三个核心问题: 闭包的准确定义是什么? 为什么会产生闭包?它依赖的语言特性有哪些? 在工程实践中,闭包有哪些典型应用与常见坑? 一、闭包的定义经典定义(MDN 版本,简化): 闭包是指 函数 与其 词 2024-10-29 #JavaScript
JavaScript 垃圾回收机制与内存管理 JavaScript 垃圾回收机制与内存管理JavaScript 是一门具有自动垃圾回收(GC,Garbage Collection)的语言,开发者不需要手动 malloc/free。但“自动”并不等于“无需关心”:理解 GC 的工作原理,有助于你写出更高效、更稳健的前端代码,避免内存泄漏与性能抖动。 本文主要回答三个问题: JavaScript 内存是如何分配与回收的? 浏览器(尤其是 V8) 2024-09-03 #JavaScript
什么是函数柯里化?原理与实战 什么是函数柯里化?原理与实战“函数柯里化(Currying)”是函数式编程中的经典概念,也是前端面试/源码中常见的技巧。很多人对它的第一印象是:“就是把多参数函数,拆成多个一参函数”,但实际应用远不止于此。 本文围绕以下几个问题展开: 柯里化的严格定义是什么? 为什么要柯里化?它能解决什么问题? 如何手写一个通用的 curry 函数? 在前端业务与框架源码中,它有哪些常见用法? 一 2024-08-11 #JavaScript
HTTPS 加密原理与实践 HTTPS 加密原理与实践HTTP 本身是明文传输协议,中间人可以轻易窃听或篡改请求与响应内容。HTTPS 在 HTTP 之上增加了 TLS 加密层,为 Web 通信提供了「机密性、完整性与身份验证」。 本文从实用角度出发,讲清楚: HTTP 与 HTTPS 的核心差异 对称加密、非对称加密与数字证书在 HTTPS 中各自扮演什么角色 TLS 握手的大致流程与关键步骤 浏览器如何验证证书?中间人 2024-07-15 #网络
浏览器从输入网址到页面加载的整个过程 浏览器从输入网址到页面加载的整个过程“从在地址栏输入 URL 到页面渲染完成,发生了什么?”是前端高频面试题,也是理解 Web 工作原理的关键路径。这个过程涉及浏览器、操作系统、DNS、CDN、Web 服务器、HTTP/HTTPS、渲染引擎等多个组件。 本文按照时间顺序,梳理整个流程: 用户输入 URL 与地址栏处理 浏览器进程与网络进程协作 DNS 解析与 IP 获取(含缓存与 CD 2024-06-01 #浏览器
JavaScript 中的原型与原型链 JavaScript 中的原型与原型链原型与原型链是 JavaScript 面向对象体系的基础,也是高频面试题。理解它们可以帮助你: 理解 new、class、extends 等语法糖的本质 正确认知“继承”“共享方法”等行为 更好地阅读框架/库的底层实现 本文从“代码出发”,逐步讲清楚: __proto__、prototype、constructor 三者的关系 原型链是如何实现 2024-05-20 #JavaScript
JavaScript 中的作用域与作用域链详解 JavaScript 中的作用域与作用域链详解理解作用域(Scope)和作用域链(Scope Chain),是掌握 JavaScript 变量查找、闭包、模块化等高级特性的基础。很多“变量找不到”“值被意外覆盖”的问题,最终都可以归结到对作用域理解不清。 本文从基础概念到常见坑,系统讲清楚: 什么是作用域?全局作用域、函数作用域、块级作用域分别是什么? 作用域链是如何工作的?变量查找的顺序如何? 2024-04-09 #JavaScript
JavaScript 中的浅拷贝与深拷贝全面解析 JavaScript 中的浅拷贝与深拷贝全面解析在实际开发中,“修改一个对象,另一个对象也跟着变了”是非常常见的坑,其根源就在于:引用类型的赋值是“引用传递”。理解浅拷贝与深拷贝,是解决这类问题的关键。 本文将从以下几个方面系统讲清楚: 基本类型 vs 引用类型在内存中的差异 什么是浅拷贝?有哪些常见实现方式? 什么是深拷贝?JSON.parse(JSON.stringify()) 有哪些坑? 2024-03-27 #JavaScript
JavaScript 中 this 指向 JavaScript 中 this 指向this 是 JavaScript 中最容易被问、也最容易写错的知识点之一。它既和函数的调用方式有关,又受到 严格模式 / 非严格模式、箭头函数、事件处理等多种场景的影响。 本文从“规则优先”的视角,系统地梳理 JavaScript 中 this 的所有常见指向场景,并配合例子与常见坑,帮助你彻底搞清楚: this 的绑定规则是什么? 箭头函数中 2024-02-18 #JavaScript
浏览器 Event Loop 事件循环机制详解 浏览器 Event Loop 事件循环机制详解在面试和日常调试中,几乎绕不开这样的问题: setTimeout、Promise.then、async/await 谁先执行? 为什么有时候 console.log 的顺序和直觉不一样? “宏任务 / 微任务” 到底是什么? 这些问题背后,都是 Event Loop(事件循环) 在发挥作用。 本文从浏览器环境出发,系统讲清楚: 同步任务 2024-01-29 #JavaScript