首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
搜索
登录
搜索
一笑痕
人生若只如初见,
是可喜亦或者是可悲?
累计撰写
201
篇文章
累计收到
7
条评论
首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
前端技术
2026-10-16
比较器给出 NaN,排序会把它当成 0
sort 的比较器并非只接受数字返回值:结果会先转成数值,NaN 会变成并列判定,undefined 和非数字字符串也会落到这条路径。稳定排序保留的是比较结果为零的元素相对次序,并不能替坏数据建立正确顺序。
2026年-10月-16日
5 阅读
0 评论
前端技术
2026-10-15
合并配置时,Object.assign 触发 setter
对象展开与 Object.assign 看起来都在复制属性,但遇到继承来的 setter 时结果不同。前者在新对象上创建自有数据属性,后者通过赋值触发 setter,目标对象甚至可能没有留下这个键。
2026年-10月-15日
15 阅读
0 评论
前端技术
2026-10-14
Intl.Segmenter 数出 1,length 数出 11
同一个字符串,.length 给出 11,展开运算符给出 7 个码点,Intl.Segmenter 给出 1 个字素。截断和字数上限都跟着这个差别走,实测数字摆在一张表里。
2026年-10月-14日
16 阅读
0 评论
前端技术
2026-10-13
100 万条数组去重,indexOf 版删光了所有 NaN
五种去重写法跑同一批百万级数组,Set 与 Map 三十毫秒内,filter 加 indexOf 要一点六秒;换成含 NaN 的样本,indexOf 版把三个 NaN 删光,sort 版一个都没去掉。
2026年-10月-13日
18 阅读
0 评论
前端技术
2026-10-12
new Array(3) 建出来的三个位置,一个键也没有
按长度建出来的数组长度是 3,0 in a 却是 false,map 一次回调都不进,JSON 出来还是 。带洞的数组和显式写了 undefined 的数组打印上分不出,遍历与序列化时的态度完全不同。
2026年-10月-12日
21 阅读
0 评论
前端技术
2026-10-11
NaN 能被 includes 找到,indexOf 却说没有
同一个数组,includes 说 NaN 在里面,indexOf 返回 -1。分叉出在三种相等判据上:=== 不认 NaN,Object.is 把正零负零分开,Set 与 Map 内部用的是第三种。把这些边界在本机跑一遍,顺带看清去重为什么对结构相同的对象无效。
2026年-10月-11日
15 阅读
0 评论
前端技术
2026-10-8
比较器只返回布尔值,排出来往往不是升序
九条 sort 比较器的检查项,全部来自本机 node v26.8.1 实测:布尔比较器给不出负数,返回 NaN 被当成并列,不传比较器按码元排,undefined 与空洞都排到末尾,sort 原地改数组又返回同一引用。
2026年-10月-8日
25 阅读
0 评论
前端技术
2026-10-7
中文名单排出来不对,多半是排序器没指定 locale
一批中文名,不传区域参数排出来是码位顺序,和拼音无关;换成 zh 规则,顺序完全是另一个样。5 万个名字排一遍,按元素新建排序器要 1113 毫秒,复用一个 18 毫秒。附六种比较器的实测顺序与两张耗时数字。
2026年-10月-7日
29 阅读
0 评论
前端技术
2026-9-30
一个字母大写之后变成两个,长度这一栏就不能信了
同一个字符转成大写,长度可能从 1 变成 2;同一个「忽略大小写」判断,转大写和转小写会给出相反的答案。本机跑了一组样本,附上每个串转换前后的码点与长度。
2026年-9月-30日
52 阅读
0 评论
前端技术
2026-9-29
reviver 从最里层往外跑,父节点拿到的是改过的值
JSON.parse 的第二个参数在每个节点上都会被调用一次,调用次序是从最里层往外,根那一层最后到。这意味着在 reviver 里改过的子节点,父节点看到时已经变了,校验和就地修改只能挑一样。另外,返回 undefined 在对象、数组和根上的结果各不相同。
2026年-9月-29日
54 阅读
0 评论
前端技术
1
2
3