為什麼Array.prototype.push 返回新的長度而不是有用的資料
Array.prototype.push,在ECMA-262 中引入,第三版,傳回一個數字,表示附加元素後數組的新長度。這種設計選擇讓開發人員感到困惑,因為它不是直接有用的信息。
來自 TC39 溝通管道的歷史證據揭示了這個決定。在 JS1.2 (Netscape 4) 中,推送是根據 Perl 的函數建模的,其行為與 Perl 4 類似,傳回最後推送的項目。然而,在 JS1.3 (Netscape 4.06) 中,push 進行了更改以符合 Perl 5 約定,現在會傳回新的陣列長度。
根據原始jsarray.c 原始碼,此修改是有意的:
/* * If JS1.2, follow Perl4 by returning the last thing pushed. Otherwise, * return the new array length. */
這種設計選擇可能源於希望提供跨JavaScript 版本的一致性並與既定的Perl 5行為保持一致。雖然返回新長度可能不會立即有價值,但它確實確保了推送操作後數組大小的清晰度。
以上是為什麼 Array.prototype.push 會傳回新的陣列長度而不是有用的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!