JavaScript Object.entries 顺序:数字形状的键为什么跑到了前面 后端返回一组编号,前端按接收顺序写进对象,再用 Object.entries 渲染列表,结果编号十忽然排到了编号二后面。对象属性确实有枚举规则,但这个规则不是所有键统一按写入顺序排列。用对象同时承担快速查找与业务排序... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Promise.finally 清理流程:普通返回值会透传,清理失败却可能覆盖原错误 请求结束后关闭加载提示,常常适合放进 Promise.finally,因为成功和失败都需要执行同一段收尾。但“无论结果如何都清理”并不等于“清理永远不会改变结果”。如果清理函数自己抛出异常,调用方最后看到的可能已经不... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Bash 没匹配到文件:星号为什么会原样进入循环 空目录里的循环居然执行了一次脚本用星号匹配当前目录的文本文件,目录里明明没有文件,循环却执行了一次,打印出带星号的名字。这是 Bash 默认路径名展开的行为:没有匹配结果时,模式原样保留。程序收到的不是“零个文件”,... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
JavaScript 字符串截断:length 数的是码元,界面需要的可能是字素 同一段文字为什么有三种长度昵称框显示四个视觉单位,程序却报告长度十;把它截到第二个位置,表情还可能变成缺损符号。原因在于 JavaScript 字符串使用 UTF 十六码元序列,length 与普通索引按码元工作。一... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
JavaScript 数字输入校验:parseInt 读到一半,也会给你一个整数 输入多了一段,程序却像没看见一个数量字段收到十二后面带单位的文本,程序用 parseInt 转换,结果得到十二,看起来很方便。可是如果这段尾巴本来代表录入错误,用户就失去了纠正机会。函数成功返回数字,只能说明开头存在... yunqueblog/ 技术教程/ 2026-10-01/ 2 阅读
Git 判断提交是否已合入:祖先关系成立,和补丁内容相同是两回事 文件里已经有修改,提交为什么还没有合入维护分支里已经出现某次修复,脚本却说原来的提交不在这个分支历史里。这并不矛盾:修复可能通过 cherry-pick 重新形成了另一个提交。两次提交的内容改动可以相同,但父提交不同... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite GROUP BY 的非聚合列:总额算对了,旁边的人名属于哪一笔 正确的合计旁边可能放错了说明报表按门店汇总销售额,同时选出顾客姓名,看起来既有总数又有具体例子。但同一家门店有多笔交易,姓名既没有参与分组,也没有使用聚合函数,SQLite 仍然允许查询执行。读者很容易把这个姓名理解... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
SQLite 整数除法:算完再转小数,为什么已经丢掉了半个 一张完成率表把一半算成了零统计任务完成率时,完成数是一,计划数是二。查询能运行,得到的比率却是零,给结果乘一百之后仍然是零。问题通常出在两项都是整数,除法已经执行了整数运算;显示层多保留几位小数,只会把零写得更长,不... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python re.fullmatch 校验:末尾多一个换行,为什么锚点仍然通过 一条看起来完整的校验漏掉了尾巴假设仓库标签要求两个大写英文字母、一条短横线和三位数字。你给模式两端加上起止锚点,测试普通标签一切正常,直到从剪贴板粘贴的标签末尾带上一个换行,仍然通过检查。这时不能只看返回对象是否存在... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读
Python JSON 严格读取:重复字段被覆盖之前,先把歧义拦下来 解析成功,未必代表输入没有歧义一份任务配置先写了重试次数二,后面又写了一次五。程序没有报错,最终只读到五,审核者却可能只注意到前面的二。此时问题不在字典查询,而在原始文本转换成字典时,重复字段的信息已经丢失,后续校验... yunqueblog/ 技术教程/ 2026-10-01/ 3 阅读