Node.js parseArgs 重复选项:传了两次 mode,为什么结果只保留最后一次 维护一个命令行工具时,用户可能同时传入 --mode=fast 和 --mode safe。解析没有报错,values.mode 却只剩 safe。要判断是否误写了两次,就不能仅检查最终 values;需要保留原始选... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
JavaScript Array.isArray 跨环境检查:明明是数组,instanceof 为什么返回 false 组件拿到另一执行环境创建的数组后,value instanceof Array 可能返回 false。反过来,一个普通对象只要把原型接到 Array.prototype,也可能让这条检查通过。如果函数真正要求的是数组... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
SQLite json_extract 的返回类型:只取一个字段是数字,多加一条路径为什么变成文本 某段查询原本只取 quantity,应用收到数字 7;后来为了顺便取 label,给 json_extract 增加一条路径,返回值却成了文本。SQLite 的这个函数并不固定返回一种“JSON对象”:路径个数与被取... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Node.js Readable.from 的字符串入口:明明可以逐字遍历,为什么只收到一整块 字符串可以用 for...of 逐个码点读取,于是把它交给 Readable.from 后,容易预期每次收到一个字符。Node.js 对直接传入的字符串和 Buffer 有专门处理:它们不会按照普通可迭代对象的方式逐... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
JavaScript TypedArray.from 的映射时机:先乘十再转整数,为什么与先建数组再 map 不同 把小数测量值乘十后存进字节数组,常见的两种写法只差一步:Uint8Array.from(input, transform),或 Uint8Array.from(input).map(transform)。它们都返回新... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Node.js readFile 读文件描述符:文件没变,为什么第二次只读到空串 同一个小文件先检查两字节的头部,再把文件描述符交给 readFile,希望得到完整内容,结果开头两字节不见了。再次调用又只返回空串。文件没有被删改,变化的是已打开文件的读取位置:接口会接着当前位置读下去。传路径和传描... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Node.js path.resolve:后面多了一个斜杠,前面的目录为什么被丢下 配置文件里约定输出目录位于项目根目录下,用户填写 exports 时得到预期结果,填写 /exports 却直接变成根目录下的路径。很多代码把 resolve 想成“把所有片段接在前缀后面”,实际上它是在计算一个绝对... yunqueblog/ 技术教程/ 2026-10-02/ 2 阅读
Node.js 移除事件监听:已经 off 了,为什么本轮回调仍然执行 一个事件有两个处理器:第一个发现任务已经取消,于是移除第二个;日志却显示第二个在这一轮仍被调用。这不是删除函数失效,而是“今后不再订阅”和“当前分发立刻停止”具有不同的时间边界。先把同一轮和下一轮分开观察Node.j... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Node.js Buffer.alloc 重复填充:ab 为什么变成 ababa,中文末尾又为何被切开 生成固定长度测试报文时,给 Buffer.alloc 传入五和字符串 ab,结果会出现 ababa。容量明明是五,为什么模式没有完整重复三次?因为第一个参数规定字节数,第二个参数提供填充模式;写满指定空间就停止,最后... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读
Node.js 连续等待事件:第一个 await 已返回,为什么第二个事件却等不到 一个任务先发 ready,再发 done。消费端顺序写两次 await once,看起来严格遵守事件顺序,却在第二次等待处停住。发布端的日志明明显示 done 已经发射,问题是消费端直到第一个 await 恢复后才注... yunqueblog/ 技术教程/ 2026-10-02/ 3 阅读