25

ECMA-262, 3rd Editionで導入されて以来、Array.prototype.pushメソッドの戻り値は次のNumberとおりです。

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

引数は、出現順に配列の末尾に追加されます。呼び出しの結果として、配列の新しい長さが返されます。

次のように、潜在的により有用なものを返すのではなく、配列の新しい長さを返すことの背後にある設計上の決定は何でしたか:

  • 新しく追加されたアイテムへの参照
  • 変異した配列自体

なぜこのようなことが行われたのですか? また、これらの決定がどのように行われるようになったのかについての歴史的な記録はありますか?

4

5 に答える 5

2

あなたが尋ねたので、私は興味がありました。サンプル配列を作成し、Chrome で検査しました。

var arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
console.log(arr);

ここに画像の説明を入力

配列とそれにプッシュするすべてのオブジェクトへの参照が既にあるため、他に役立つ可能性のあるプロパティは 1 つだけです... 長さです。Array データ構造のこの 1 つの追加値を返すことで、すべての関連情報にアクセスできるようになりました。ベストなデザインチョイスのようです。それか、1 つのマシン命令を節約するために議論したい場合は、何も返さないでください。

なぜこのようなことが行われたのですか? また、これらの決定がどのように行われるようになったのかについての歴史的な記録はありますか?

手がかりはありません - これらの線に沿った理論的根拠の記録が存在するかどうかはわかりません。それは実装者次第であり、ECMA スクリプト標準を実装する任意のコード ベースでコメントされる可能性があります。

于 2015-12-14T03:31:18.960 に答える