JavaScript 迭代器和生成器

JavaScript

迭代器是遵循特定协议的对象,通过 next() 方法依次访问容器元素,返回 { done, value } 对象。可迭代对象需实现 [Symbol.iterator] 方法返回迭代器,使对象支持 for...of 等迭代操作。原生如数组、字符串、Set 等已实现该协议。应用场景包括 for...of 循环、展开运算符、解构赋值等。通过自定义 [Symbol.iterator] 方法,可将普通对象转为可迭代对象,实现更灵活的遍历控制。

辰风沐阳 阅读 362 2026-02-05

JavaScript 宏任务和微任务

JavaScript

JavaScript 任务机制解析:同步任务按顺序执行并阻塞后续代码;异步任务分为宏任务(setTimeout/ajax)和微任务(Promise.then),后者优先级更高。定时器存在最小 4 毫米延迟,其回调需等待同步任务完成。DOM渲染受任务执行顺序影响,可通过调整脚本位置优化。复杂计算任务可拆分为子任务放入异步队列避免阻塞。示例展示了进度条动画和数值累加的实现,体现了任务队列的轮询机制。

辰风沐阳 阅读 305 2026-01-30

JavaScript 的 WebSocket 使用指南

JavaScript

WebSocket 是一种基于 TCP 的全双工通信协议,允许客户端和服务器建立持久连接,实现高效实时数据交换。全双工通信:客户端和服务器可随时主动发送数据,无需遵循传统 HTTP 的 “请求-响应” 模式。本文还记录了 WebSocket 的心跳检测以及重连机制,主要提供一个思路,实际开发中可以自行修改

辰风沐阳 阅读 520 2026-01-12

JavaScript 的 JSON 序列化

JavaScript

JSON 是一种独立于编程语言的轻量级数据交换格式,由 Douglas Crockford 设计。它支持简单值、对象值和数组值三种顶层结构,广泛应用于配置文件、网络数据传输和 NoSQL 数据库存储。JSON 序列化(stringify)和解析(parse)方法可以实现数据转换,其中 stringify 方法支持通过参数控制转换内容和格式化输出。JSON 还可用于对象深拷贝,但不支持函数值的转换。这些特性使 JSON 成为现代开发中不可或缺的数据格式。

辰风沐阳 阅读 461 2025-03-20

JS 设备检测功能函数

JavaScript

本文用于记录 JS 设备检测相关功能函数,比如:检测当前设备是电脑端还是移动设备、当前设备是否为 ios 端。每个功能函数都已经过测试,保证可以使用。本文已会持续更新,不断增加新的功能函数和完善功能方法

辰风沐阳 阅读 2364 2024-05-07

JavaScript 高级语法 Promise

JavaScript

本文介绍了 JavaScript 中 Promise 的基础用法和核心概念。首先分析了传统回调函数的弊端,然后详细讲解了 Promise 的基本使用方式,包括创建 Promise对象、then 和 catch 方法的使用。文章还阐述了 Promise 的三种状态(pending、fulfilled、rejected)及其不可变性。重点解析了 resolve 方法的参数类型,包括普通值、其他 Promise 对象和 thenable 对象。

辰风沐阳 阅读 535 2024-02-03

JavaScript 数组方法 slice 和 splice

JavaScript

JavaScript 数组方法 slice 和 splice 的区别及应用:slice 用于提取数组片段,不改变原数组,接收起始和结束索引;splice 用于添加/删除元素,会修改原数组,接收起始索引、删除数量和插入项。应用场景包括历史记录管理(使用 splice 删除重复项后 unshift 添加,slice 截取数量)和数据缓存处理(使用 splice 替换重复 ID数据)。两者在功能和参数上存在明显差异,适用于不同数据处理需求。

辰风沐阳 阅读 2406 2023-06-21

JavaScript 数组填充方法 Array.fill()

JavaScript

项目开发中,我们经常会定义具有特定长度的初始化数组,数组中的每一项元素默认为 empty 空位占位。如果对数组这些空位添加默认的元素,ES6 提供了 fill() 方法实现这一操作,本文详细总结 fill() 方法的使用。数组填充基本数据类型是没有问题的,填充对象则需要手动实现,可以在原型上定义个方法实现

辰风沐阳 阅读 2836 2023-04-14

优化代码分支,让代码更优雅

JavaScript

前端开发中经常遇到的一个困扰,就是有的时候代码里边会出现很多的分支,下面举了个例子,这个分支比较少,有些情况下会有几十个分支,导致了代码非常难看,那么有没有什么办法来优化这个结构呢?

辰风沐阳 阅读 2181 2023-04-03

a == 1 && a== 2 && a== 3 返回 true ?

JavaScript 面试题

这道题是阿里、百度、腾讯三个大厂都出过的面试题,一个前端同事跳槽面试也被问了这道题。看了大厂的面试题会对面试官的精神状态陷入深深的怀疑,就感觉不太正常,平时谁会这样写代码。但是呢,很多事经不住细想,细想后,好像还是有点道理的。

辰风沐阳 阅读 1900 2023-04-01