JS的unshift命名逻辑简直是反人类
明明Undo就是撤销,结果在JavaScript里要把元素添加到数组开头,得用一个叫
下一篇
我的GitHub绿墙焦虑:追求工程实操还是刷提交数? →
unshift 的方法?这命名逻辑谁能给我解释清楚?按常理想,shift是移位,unshift难道不应该是“取消移位”或者“移回”吗?结果它居然成了“在头部插入”。每次写代码写到这里,只要稍微走神,我绝对会把 shift 和 unshift 搞混。而且这种命名不统一的问题在工程落地时最容易掉坑,尤其是刚入行的新手,看到这个词第一反应绝对不是“添加”,而是“撤销”。
对比一下其他语言的实操,这种命名方式确实挺让人上头的。在JS里操作数组,基础命令虽然简单,但语义化简直是一场灾难:
const queue = ['B', 'C'];
// 想要在开头加个 'A',居然得用 unshift
queue.unshift('A');
console.log(queue); // ['A', 'B', 'C']// 而 shift 则是移除第一个
queue.shift();
console.log(queue); // ['B', 'C']
这种不直观的 API 设计,在项目规模大起来之后,维护成本其实是被潜移默化地拉高了。每次 Review 代码时,还得盯着看这句 unshift 到底是在做加法还是在做某种奇怪的撤销操作。