ホームページ  >  記事  >  ウェブフロントエンド  >  Array.prototype.push が追加された項目ではなく長さを返すのはなぜですか?

Array.prototype.push が追加された項目ではなく長さを返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-22 10:09:30698ブラウズ

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

Array.prototype.push の奇妙なケース: 便利なものではなく長さを返す理由

Array.prototype.push は1 つ以上の要素を含む配列を拡張する JavaScript メソッド。新しく追加された項目または変更された配列自体を返すより直感的な対応物とは異なり、push は興味深いことに配列の新しい長さを返します。この型破りな動作により、現在の実装に至った設計上の決定について疑問が生じています。

歴史的背景

この設計選択の背後にある理論的根拠を明らかにするために、プッシュの歴史。 TC39 の通信ハブが詳述したように、プッシュは Perl の配列操作関数に触発されて、1997 年に JavaScript 1.2 (Netscape 4) でデビューしました。当初、push は Perl 4 の規則に従い、最後にプッシュされた項目を返しました。ただし、JavaScript 1.3 (Netscape 4.06) では、プッシュ シフトの動作が Perl 5 に合わせて変更され、配列の新しい長さが返されました。

Rationalization

なぜ新しい長さを返したのか追加された項目や変更された配列を返すよりも適切な長さと思われますか?残念ながら、この疑問は未解決のままです。過去の記録には、Perl 4 からのこの逸脱の背後にある理由に関する詳細がほとんど記載されていません。ただし、次のような潜在的な考慮事項については推測できます:

  • 実装の簡素化: 新しい長さを返すと、次のような影響が生じる可能性があります。実装が簡素化され、追加された項目または変更された配列を追跡および操作するためのコードが少なくなります。
  • Consistency: 新しい長さを返すことは、splice や splice などの配列の長さを操作する他のメソッドと一致します。シフト。この一貫性は、より直感的で一貫性のあるインターフェイスのために優先された可能性があります。

代替オプション

デザイナーが新しい長さを返すことを選択しなかった場合、他のオプション

  • 新しい項目を返す: これにより、追加された要素への直接アクセスが提供され、開発者が新しい長さを使用して手動で要素を取得する必要がなくなる可能性があります。
  • 変更された配列を返す: プッシュ操作によって変更された配列自体を返すと、更新された配列を収集するための追加の手順が不要になります。

結論

新しい長さを返す Array.prototype.push の背後にある具体的な理論的根拠は完全には明らかではありませんが、その歴史的な起源は Perl であり、単純さと一貫性の潜在的な利点が影響を与えている可能性があります。実装。この設計上の決定は開発者の期待と完全に一致しない可能性がありますが、JavaScript で配列を操作するための明確に定義された一貫した動作を提供します。

以上がArray.prototype.push が追加された項目ではなく長さを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。