- 博客(62)
- 收藏
- 关注
原创 JavaScirpt高级程序设计第三版学习查漏补缺(1)
2.null和undefined区别:null表示空对象引用,已显实初始化目前没有赋值但将来会被赋值为对象;4.boolean值为false只有六种情况:关键字false、空字符串、NaN、0、null、undefined。3.<script>中显实使用defer和async用来首屏优化。(这一块可以拓展深入)5.0.1+0.2 === 0.3 //false,浮点数最高精度为17位小数。对全局变量显实赋值为null,管理内存。1.MIME:表示编写代码使用的脚本语言的内容类型。
2025-08-17 20:29:52
404
原创 指针/边界索引混淆梳理
链表创建一个dummy节点,添加到head前,则可认为从索引0开始。在处理数组/链表等数据结构时,时常混淆长度和指针序号。处理技巧:使用0-base索引。
2025-08-16 19:37:27
416
原创 LeetCode 1991:找到数组的中间位置
方法二:数学公式,2*leftSum = sum - num[i],i即为所求索引。时间O(n),空间O(1)。方法一:分别累计存储左右的和。技巧:lodash实用库弥补原生JS不足。
2025-08-16 13:47:00
644
原创 localhost:5501与本机ip:5501不同源
博主在测试时候发现,使用express设置CORS时,浏览器将localhost:5501与本机ip:5501两个url视为不同源。浏览器报错被CROS协议封锁。修改后端响应头Access-Control-Allow-origin:http://127.0.0.1:5501,成功跨域访问。
2025-08-14 14:17:39
331
原创 深度贴:前端网络基础及进阶(3)
同源策略是一套浏览器「安全机制」,当一个源的文档和脚本,与另一个源的资源进行通信时,同源策略就会对这个通信做出不同程度的限制。简单来说,同源策略对。源和同源:源(origin)由协议(schema)、域名domian、端口号port组成。只要协议、域名、端口号都相同的就是同源。若服务器明确拒绝或没有表示,则校验不通过,产生跨域问题。同源请求:同源指的是页面源和目标源两者之间。页面源和目标源不一致的时候就是跨域请求;因此限制造成的开发问题,称之为跨域(异源)问题。在网页源和目前源之间添加一个中间服务器。
2025-08-12 21:32:52
703
原创 深度贴:前端网络基础及进阶(1)
前端在实际开发中,与网络相关知识接触最多,具体的场景如调用AJAX、FETCH;前后端协同开发;性能优化等等。
2025-08-10 00:25:27
1407
原创 异步改变Promise状态与then调用顺序
在Promise里,Promise实例的then方法只有实例状态从pending改变才会被推入微任务队列执行,在状态改变前,只会记录成功和失败的回调函数引用而不执行。单纯理解事件循环,按照微任务优先级>宏任务优先级的机制,应该输出2 4 3 1,问题在哪?事件循环是对 执行的函数 按优先级执行,没有被执行的则谈不上这个机制。“异步改变Promise状态与then调用顺序”
2025-08-08 14:35:13
158
原创 深度贴:面试频繁手撕Promise,它足够重要!
Promise是谁对谁的承诺(Promise)?为什么大厂面试要手撕Promise的方法?Promise是为了解决什么场景下的问题?Promis是怎么提高我们的开发体验的?让我们带着这些问题进入本文⬇️...在开始之前,博主聊聊对Promise的本质看法:Promise变量语义:js引擎外的程序(进程或线程)对 js引擎的约定(Promise)。“我给你发了一个任务,我保留是否收到你对我反馈的记录。所以可以顺着思考使用场景:需要交由外部线程去处理的任务源(代码),都可以考虑用promise处理。
2025-08-08 00:41:48
850
原创 配置VScode内置Emmet自动补全代码
在VScode “设置->拓展”里找到Emmet,进入"配置文件settings.json",添加如下配置代码字段。博主发现每次写html语法都要自己从头开始写一遍<!DOCTYPE>,为偷懒,遂寻到Emmet。创建文件直接输入一个"!",插件自动补全代码。
2025-08-07 15:03:09
537
原创 flex布局:容器内部项目间距调整、排序、主轴行列变换等
flex的布局核心思路是:创建一个container,然后对container属性进行赋值,我们的布局都在container中进行。
2025-08-07 14:12:13
161
原创 flex布局:容器的justify-content属性
justify-content(行内容)属性一共有都个值:图片布局示例从上到下以此对应justify-content的值:
2025-08-06 20:52:43
289
原创 “Why“比“How“更重要:层叠样式表CSS
在开始之前,我们先抛出一些问题:CSS是在什么背景下出现的?你知道我们常说的CSS3标准是按模块推出的吗?为什么入门要从盒模型开始?CSS是如何参与浏览器中渲染部分的?
2025-08-05 23:41:58
1681
原创 深度贴:你真理解React Hooks吗?
博主在思考:为什么React 反复提及状态的概念?这个问题单独看React是得不到答案的。在博主看来,传统的前端是 JavaScript 编写逻辑(代码)控制状态,然后操作DOM更新状态显示到页面。(场景)不难思考到,传统的前端在使用中面临许多问题(问题)在工程结构中,在文件架构中HTML与JS分离。复用一套前端的模版,要单独复制JS、CSS 与HTML。复用效率低下。DOM渲染资源消耗高。主流的前端框架一直在探索上面两个问题的解决方案,对此,对应的解决方案有(方案)
2025-08-03 21:05:50
1994
原创 LeetCode 热题100:206. 反转链表
这道简单题,两个简单的思路,链表的思路基本比较类似:使用额外数据结构存储迭代遍历的val、快慢指针等等。
2025-08-01 22:22:36
443
原创 一道很火的面试题:add(1)(2)(3)——柯里化+闭包+重写toString方法
思路:要保存每次输入的变量,能不限次数反复调用,最后返回所有变量的和。add(1)(2,3,4)(5),输出16。add(1,2,3)(4),输出10。add(1)(2)(3),输出6。
2025-08-01 16:14:04
152
原创 一文知根:JS中this到底指的谁?
this也是上下文的一种,在一个执行上下文栈帧中,函数执行上下文 = 环境记录 + outer + this的绑定 共同组成。this的指向比较复杂,且同样重要。
2025-08-01 14:17:34
765
原创 浅拷贝和深拷贝
引用:指向堆内存中的指针,指针指向的地址存储了引用类型数据。栈内存:7个基本类型存储在执行上下文栈中,正常情况跟随执行上下文一起被创建和回收。复用:多个变量为同一个引用。
2025-07-29 16:53:26
321
原创 前端工程化宏观基础概念
前端到底有哪些东西?前端语言:JavaScript、HTML、CSS协议:网络相关协议(http、websocket、oauth2、websocket)环境:浏览器、node环境、小程序环境、app环境、构建工具。框架/库:Vue、React、aixos服务器:node、expree、mysql、redis、mongoDB工程化:TS、saas、less、stylus。
2025-07-28 11:01:05
893
原创 深度贴:JS到底如何被执行——JavaScript引擎及执行上下文
JavaScript执行机制解析:从词法环境到V8引擎 本文系统梳理了JavaScript的核心执行机制,主要包括四个部分:1)词法环境与变量环境的区别及关系;2)闭包的形成机制与内存管理;3)V8引擎的完整执行流程;4)内存回收机制。文章详细解释了词法环境由环境记录和外部引用组成的三层结构,以及闭包形成的三要素;通过流程图展示了V8引擎从初始化到代码执行的全过程,包括解析、编译、优化等关键环节;最后分析了内存生命周期和垃圾回收机制。对变量提升、作用域链、执行上下文等核心概念进行了深入剖析,为理解JavaS
2025-07-27 00:24:52
1634
原创 LeetCode 热题100:160.相交链表
根据这个思路,当A和B指针遍历到null,跳到对方的头节点,若两个节点相等,则一定交于同一个节点(最终一定交于null)参照图片,链表A指针从开始到null,链表A步长 = 链表A独立节点步长 + 公共节点步长 + 空节点;链表A步长 + 链表B独立节点步长 == 链表B步长 +链表A独立节点步长。同理,链表B步长 = 链表B独立节点步长 + 公共节点步长 + 空节点。时间复杂度O(m+n),空间复杂度O(m)时间复杂度O(m+n),空间复杂度O(1)
2025-07-23 17:01:28
684
原创 LeetCode 热题100:42.接雨水
关键理解点1:不论如何,right_max和left_max最终会汇聚到height最高的一列,也就是 max = Math.max(...height)。Volume = min(left, right) - height,即。关键理解点2:总是以桶最短的边减去底座装满水。总是以桶最短的边减去底座装满水。这道题也可以用双指针。
2025-07-22 21:34:23
647
原创 LeetCode 热题100:11.接雨水
算法思路:volume = min(左边桶高,右边桶高)*桶长。左右相向双指针,时间复杂度O(n),空间复杂度O(1)。
2025-07-22 16:56:21
248
原创 React 源码7:Lane、React和schedule优先级转换
在《源码3》requestUpdateLane函数根据eventLane获取不同情况对应优先级。
2025-07-16 18:41:10
768
原创 React源码5 三大核心模块之一:render,renderRoot
【代码】React源码5 三大核心模块之一:render,renderRoot。
2025-07-15 22:10:00
262
原创 React源码6 三大核心模块之一:commit, finishConcurrentRender函数
【代码】React源码6 三大核心模块之一:commit, finishConcurrentRender函数。
2025-07-15 22:09:57
339
原创 React源码4 三大核心模块之一:Schedule,scheduleUpdateOnFiber函数
在《React源码3》,我们已经将update加入队列并返回到了根容器节点root。
2025-07-15 18:13:10
584
原创 React源码3 :update、fiber.updateQueue对象数据结构和updateContainer()中enqueueUpdate()阶段
回顾:初始化创建完FiberRootNode和hostRootFiber后,调用render方法update。
2025-07-15 00:08:39
918
1
原创 CSS设计理念:层叠、优先级和继承
简单的说,就是 CSS 规则的顺序很重要;当应用两条同级别的规则到一个元素的时候,写在后面的就是实际使用的规则。
2025-07-12 03:15:20
187
原创 CSS 版本迭代历史和版本特性
这个版本包含了font(字体)的相关属性、颜色与背景的相关属性、文字的相关属性、box的相关属性。分成若干较小的模块较利于规范及时更新和发布,及时调整模块的内容;同时模块独立实现和发布,也为日后CSS3.0标准正式推出铺垫。1998年5月,CSS2.0推出。推荐内容和表现效果分离的方式,开始使用样式表结构。CSS3.0的新特性是被分成若干个相互独立的模块。2001年,W3C着手开始准备开发CSS第三版规范,推出草案。将HTML和CSS分离,通过导入CSS文件到HTML文件,使用外联样式表。
2025-07-11 11:04:03
364
原创 深度帖:浏览器的事件循环与JS异步
从渲染主线程、同步的劣势和异步操作过程等角度回答。JS的运行环境JS是单线程的语言,这是因为它运行在浏览器渲染进程中的渲染主线程,渲染主线程只有一个。渲染主线程是浏览器线程里最繁忙的一个,承担了许多工作,解析HTML、解析CSS、计算样式、布局、处理图层、每秒渲染页面60次(60帧)、执行全局JS代码、封装成任务的事件处理和计时器回调函数(选几个回答)等都在其中执行。如果使用同步的方式,极有可能会造成渲染主线程的阻塞,从而导致消息队列中的很多其他任务无法执行。
2025-07-09 23:11:47
627
原创 数据结构1:哈希表HashMap
哈希表通常基于数组实现,是一种将文本、数字等数据通过哈希化投影到一维数组中存储的数据结构。提供快速的插入-删除-查找操作。无论数据量多大,插入和删除的时间复杂度O(1)。哈希表的查找速度很快。
2025-07-08 04:46:11
470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅