当前位置:  开发笔记 > 编程语言 > 正文

为什么Array.prototype.push返回新的长度而不是更有用的东西?

如何解决《为什么Array.prototype.push返回新的长度而不是更有用的东西?》经验,为你挑选了1个好方法。

自ECMA-262第3版推出以来,该Array.prototype.push方法的返回值为Number:

15.4.4.7 Array.prototype.push([item1 [,item2 [,...]]])

参数按照它们出现的顺序附加到数组的末尾.作为调用的结果,返回数组的新长度.

返回数组的新长度背后的设计决策是什么,而不是返回可能更有用的东西,例如:

对新添加的项目的引用

变异数组本身

为什么这样做,并且是否有关于如何做出这些决定的历史记录?



1> romellem..:

我将其发布在TC39的通信中心中,并且能够进一步了解其背后的历史:

pushpopshiftunshift最初在1997年加入到JS1.2(网景4)。

在Perl中以类似命名的函数为模型。

JS1.2 push遵循Perl 4约定,该约定返回最后推送的项目。在JS1.3(1998年夏季的Netscape 4.06)中,更改了推力,以遵循返回数组新长度的Perl 5约定。

参见https://dxr.mozilla.org/classic/source/js/src/jsarray.c#804

/*
 * If JS1.2, follow Perl4 by returning the last thing pushed.  Otherwise,
 * return the new array length.
 */

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有