1. ホーム
  2. javascript

[解決済み] Array.size()とArray.lengthの比較

2022-03-22 22:17:15

質問

この2つの違いは何ですか?

だから、私は知っている array.size() は関数であるのに対し array.length はプロパティです。どちらか一方を使うべきユースケースはありますか?どちらがより効率的なのでしょうか?(私が想像するのは .length は、メソッド呼び出しではなくプロパティであるため、大幅に高速化されます?) なぜ遅い方を使うのでしょうか?どちらか一方と互換性のないブラウザがあるのでしょうか?

  var x = [];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);
  x =[1,2,3];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);

印刷されます。

  0, 0, true
  3, 3, true

解決方法は?

Array.size()は有効なメソッドではありません。

常にlengthプロパティを使用する

配列のプロトタイプに size メソッドを追加するライブラリやスクリプトがありますが、これはネイティブの配列メソッドではないためです。これは一般に、カスタムゲッターのサポートを追加するために行われます。使用例としては、配列のメモリ上のサイズを取得したい場合などです(この名前だと、これくらいしか思いつきませんね)。

Underscore.jsでは残念ながら size メソッドは、実際にはオブジェクトや配列の長さを返します。残念ながら関数の length プロパティは、関数が宣言する名前付き引数の数として定義されているため、代替手段を使用する必要があり、size が選ばれました (count の方が良い選択だったでしょう)。