for...in与for...of

  在前端开发中,我们经常需要对数组、对象或其他可遍历结构进行循环。JavaScript 提供了多种方式,其中最容易混淆的就是 for...infor...of,真的很难记。它们看起来很像,但本质上完全不同,作用对象和遍历内容也大不一样。本篇文章将带你系统地了解它们之间的区别与使用场景。

阅读更多

WebWorker与计时器优化

   JavaScript 是单线程语言,所有任务(包括 UI 渲染、事件处理、计时器等)都运行在一个主线程中。当遇到计算密集型任务时,页面可能会卡顿、响应变慢,一些动画、计时器会出现延迟。这时,Web Worker 作为 Web 提供的一种“多线程”能力,就成了性能优化的重要手段。本文将带你了解 Web Worker,并通过计时器优化这一实际场景说明它的价值。

阅读更多

Object和Map

  在早期的 JavaScript 中,Object 是唯一可用的键值对结构,常被当作“字典”使用。随着 ES6 的推出,Map 以更现代化和高性能的形式登场,解决了 Object 在键类型、性能、原型污染等方面的局限。理解两者的异同,不仅能写出更清晰的代码,也能在性能和安全性上获得提升。

阅读更多

通过手写hash路由理解单页应用

  在现代前端开发中,前端路由几乎是单页应用(SPA)不可或缺的一部分。Vue Router、React Router 等流行工具对路由进行了很好的实现,本文将通过一个简单的 Hash 路由实现一个简单的前端路由系统,帮助更好的理解路由实现逻辑。

阅读更多

JavaScript设计模式实战

  最近在学习设计模式,真的感觉它是一个很悬的东西,就看文本真的很难看懂,所以我就打算用最习惯的 JavaScript 的代码,通过实现 用户管理系统 这一统一场景下的不同功能,使用不同的设计模式来帮助理解。

阅读更多

NaN为什么不相等

  在 JavaScript 中有个很反直觉的事情,两个 NaN 不管是 == 还是 === ,返回结果都是 flase ,这也是一道很常出现的面试题,这里进行一个说明。

阅读更多

Js中的构造函数

  在写 JavaScript 的时候,经常可以看到 new Date() 这样的语法,这里 new 的就是构造函数,我们通过 function 可以定义,而箭头函数却不行。

阅读更多

JavaScript基础算法题

  最近开始了前端基础知识的复习,在这个文章里进行一个简单的记录,如果内容不特别多会全部更新在这里。由于封装成函数可能不利于理解和说明,在这里的大部分题目的解答都不会封装成函数。

阅读更多

类实例属性状态残留问题

  今天在看【新思路管理后台】时遇到了一个很奇怪的问题,函数执行正确的时候系统日志记录是没有问题的,但是函数执行错误的时候,系统日志中的操作者和操作行为不是默认的值,而是上一个正确操作者的信息。这是因为我对日志记录和函数返回其实是封装了一个操作执行类 OperationExecutor ,在多次调用时,某些实例属性(如 opAction)未能恢复初始值,导致后续调用继承了上一次的状态。本文简单记录一下解决的方案。

阅读更多