首页  >  文章  >  web前端  >  为什么 Array.prototype.push 返回长度而不是附加项?

为什么 Array.prototype.push 返回长度而不是附加项?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-22 10:09:30695浏览

Why Does Array.prototype.push Return the Length and Not the Appended Item?

Array.prototype.push 的奇怪情况:为什么它返回长度而不是更方便的东西

Array.prototype.push 是一个使用一个或多个元素扩展数组的 JavaScript 方法。与返回新添加的项或修改的数组本身的更直观的对应项不同,push 奇怪地返回数组的新长度。这种非常规的行为引发了人们对导致其当前实施的设计决策的质疑。

历史背景

为了揭示这种设计选择背后的基本原理,我们深入研究了推的历史。正如 TC39 通信中心所述,受 Perl 数组操作函数的启发,推送于 1997 年在 JavaScript 1.2 (Netscape 4) 中首次亮相。最初,push 返回最后推送的项目,遵循 Perl 4 约定。然而,在 JavaScript 1.3 (Netscape 4.06) 中,push 改变了其行为以与 Perl 5 保持一致,返回数组的新长度。

合理化

为什么返回新的长度长度被认为比返回附加项或变异数组更合适?不幸的是,这个问题仍然没有答案。历史记录没有提供关于这种与 Perl 4 的偏差背后的原因的详细信息。但是,我们可以推测一些潜在的考虑因素:

  • 简化实现:返回新长度可能有简化了实现,需要更少的代码来跟踪和操作添加的项目或修改的数组。
  • 一致性:返回新长度与其他操作数组长度的方法(例如 splice 和 splice)保持一致转移。这种一致性可能是为了更直观和更有凝聚力的界面而优先考虑的。

替代选项

如果设计师没有选择返回新长度,其他选项可以考虑:

  • 返回新项目:这将提供对添加元素的直接访问,可能会节省开发人员使用新长度手动检索它的需要。
  • 返回修改后的数组:返回由推送操作修改的数组本身,可以消除收集更新数组的额外步骤的需要。

结论

虽然 Array.prototype.push 返回新长度的具体原理并不完全清楚,但它在 Perl 中的历史起源以及简单性和一致性的潜在优势可能影响了它执行。虽然此设计决策可能与开发人员的期望并不完全一致,但它为在 JavaScript 中操作数组提供了定义明确且一致的行为。

以上是为什么 Array.prototype.push 返回长度而不是附加项?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn