- 博客(15)
- 收藏
- 关注
原创 可执行代码与执行上下文——环境记录
环境记录是ECMAScript规范中定义标识符绑定的抽象机制,它分为声明式环境记录(包含函数和模块环境记录)、对象环境记录和全局环境记录三大类。每种环境记录类型对应不同的代码结构,如函数调用、with语句或全局作用域。环境记录通过[[OuterEnv]]字段形成嵌套关系,支持绑定管理、this值确定等操作。私有环境记录则专门用于类声明中的私有名称管理,通过[[OuterPrivateEnvironment]]和[[Names]]字段维护私有名称的层级结构。这些机制共同构成了ECMAScript的词法作用域体
2025-06-13 23:31:34
357
原创 js执行环境
JavaScript执行环境由引擎和宿主环境协同工作,引擎处理ECMAScript核心功能,宿主环境提供外部交互机制(如浏览器DOM或Node.js)。执行环境包括独立的堆、任务队列和调用栈,确保线程安全。作用域关联代码加载,包含内置对象和全局变量。调用栈管理同步代码执行,生成器支持暂停恢复,尾调用优化递归性能。闭包保存变量作用域。任务队列和事件循环处理异步操作,遵循"运行至完成"原则,避免阻塞以保证响应性。宏任务和微任务优先级不同,确保代码执行顺序可预测。这种设计使JavaScript
2025-06-13 09:25:20
941
原创 async&await
本文介绍了JavaScript中async/await的用法与实现原理。async函数是生成器函数的语法糖,通过await表达式将异步代码切割成同步执行的片段。await会根据等待对象类型(Promise或非Promise)采取不同的处理方式。主要应用场景包括顺序接口调用、并发请求和错误处理(结合try/catch)。文章最后给出了一个基于生成器函数的async/await简单实现方案,通过将生成器函数转换为返回Promise的函数来模拟异步行为。
2025-06-11 15:17:33
238
原创 嵌套对象转换为扁平化表格数据结构
在数据处理和展示中,我们经常需要面对不同数据结构之间的转换。今天,让我们来看一个有趣的例子,它展示了如何将嵌套的对象结构转换为更适合表格展示的扁平化结构。
2025-06-09 21:39:57
128
原创 BMapGL定制化路线规划图层
摘要:针对百度地图默认导航路线样式与设计稿不符的问题,本文提出使用BMapGL.LineLayer进行定制化路线规划。关键步骤包括:1)创建自定义路线图层,通过getLineLayer函数配置线条样式参数;2)将坐标点转为GeoJSON格式数据;3)使用setData方法设置路线数据;4)将图层添加到地图。方案支持自定义线条颜色、宽度、纹理等属性,实现比默认路线更丰富的视觉效果。代码示例提供了完整的图层创建、数据转换和地图添加的实现方法。
2025-06-09 21:19:59
479
原创 table嵌套input输入框,input输入框的blur事件需要调接口保存数据,需要点击两次提交按钮
摘要 Table嵌套Input时,提交按钮需点击两次才能生效。原因是blur事件触发异步保存,与click事件冲突。解决方案:改用mousedown事件或通过setTimeout/Promise确保异步完成。代码示例显示在mousedown事件中延迟提交逻辑,确保blur保存完成后再执行提交。
2025-06-08 19:43:22
154
原创 批量发起多个请求,接口失败处理
摘要: 文章探讨了如何优雅处理连续接口校验的失败场景。提出了设置中止标记的方案,当某次校验失败时,标记置为true以跳过后续请求并处理错误。代码示例展示了使用shouldAbort标记控制异步循环的执行。还扩展介绍了使用AbortController主动终止已发起请求的方法,通过创建控制器对象和信号机制实现请求取消功能。两种方案分别适用于不同场景:标记方案适用于未发起的后续请求,AbortController适用于已发出的请求终止。
2025-06-08 02:15:11
240
原创 动态导入懒加载tab如何确保下一个tab已经挂载
动态加载Vue组件时遇到组件未挂载问题,解决方案如下:通过监听hook:mounted钩子跟踪组件挂载状态,创建Promise等待目标tab挂载完成。具体实现:1)初始化时记录各tab未挂载状态;2)组件挂载后更新状态;3)下钻时使用waitForComponentMount方法,通过watcher监听挂载状态变化,确保组件实例可用后才进行操作。该方法有效解决了动态组件加载时序问题,确保能安全访问组件实例方法。
2025-06-05 23:01:23
115
原创 手写Promise
promise本质是一个对象,抽象理解为一个容器,里面放着一个异步的事件,会在未来执行,新建的promise处于pending状态,如果这个事件执行成功了状态就变为resolved,失败则为rejected。
2023-06-03 17:07:50
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人