[]を使用して変数を定義した後、 new Array を使用しないのは正しいでしょうか?
var v = [];
v = Array(5); // is new necessary?
[]を使用して変数を定義した後、 new Array を使用しないのは正しいでしょうか?
var v = [];
v = Array(5); // is new necessary?
Array
2 つのオブジェクトを作成し、1 つを破棄しているので、あなたがしていることは必要ありません。
変数を宣言し、配列を作成します。
var v;
v = new Array(5);
または、単一のステートメントとして:
var v = new Array(5);
配列を作成する好ましい方法はnew Array
、サイズを指定する場合は使用し、アイテムから配列を作成する場合は配列リテラルを使用します。
var a1 = new Array(42); // creates an array with 42 undefined items
var a2 = [1, 2, 3]; // creates an array with the 3 items
サイズがゼロの配列の場合、次のいずれかを使用できます。
var a1 = new Array(); // creates an empty array
var a2 = []; // creates an empty array
コンストラクターはアイテムのArray
リストを受け取ることもできますが、アイテムが 1 つあり、そのアイテムが数値である場合は動作が異なるため、その使用は避ける必要があります。
var a1 = new Array(100, 101, 102); // creates an array with three items
var a2 = new Array(100, 101); // creates an array with two items
var a3 = new Array(100); // creates an array with 100 undefined items
いいえ、どちらも同じことをするので必要ありません。基本的にあなたがすべきことは次のとおりです。
var v=[]; or var v=[value1, value2 ...];
配列を定義する 2 番目のバージョンには、次のような問題があります。
Array(4)
==> 空の 4 要素配列を作成します
Array(4,5)
==> 2 つの要素 (4 と 5) を持つ配列を作成します
したがって、1 要素の配列を作成したい場合は、顔が爆発します。したがって、最初のバージョンをお勧めします。
最初の行は、空の配列を作成します。
2 番目は、5 つの要素を持つ配列を作成します。すべての要素の値は ですundefined
。
両方を使用しても意味がありません。どちらを使用するかは、何をしようとしているかによって異なりますが、2 番目の形式は実際にはあまり使用されません。必要なのは最初のものだけである可能性が非常に高いです。
v の値を長さ 0 の配列から長さ 5 の配列に再代入しています。これにより、=[]
パーツが冗長になります。
編集:
ここでの主な違いは、Array コンストラクターのプロトタイプを変更できることです。そのため、最終的に得られるものは、標準の問題の JavaScript Array と必ずしも同じではありません。
[] を使用して代入すると、内部コンストラクターが使用されます。これは、配列プロトタイプの改ざんが新しいオブジェクトに影響を与えないことを意味します。たとえば、結合メソッドを呼び出そうとすると、Array.prototype.join=function(){alert("duh");}
構築するすべての配列を設定して、 「当たり前」と警告することができます。new Array(...)
を使用して割り当てられた配列[]
は、これの影響を受けません。
Array
簡単な答えは、次のような場合でも、宣言でキーワードを使用する正当な理由はほとんどないということです。
var a = Array(n)
また
var a = new Array(n)
ちょうど使用:
var a = [];
代わりは。
配列で使用する必要はありません。演算子new
を使用せずに配列を作成できると思いますnew
JavaScript は、ほとんどの言語とは異なり、必要に応じて自己拡張するような配列を提供します。しかし、それはコストがかからないという意味ではありません。
長さ N の配列があり、インデックス M >= N に何かを配置する場合、長さ M - 1 の新しい配列を作成し、N からすべてをコピーして要素を追加する必要があります。これは非常に遅いです。 JavaScript には非常に多様な実装があり、配列を特別な長さプロパティを持つ通常のオブジェクトと見なす人もいることに注意してください。
したがって、それを避けるために、配列のサイズがわかっているが、含まれるものがわからない場合は、を使用しますnew Array( size )
。含まれる内容がわかっている場合は、リテラル表記を使用することをお勧めします[ item1, item2 ]
。本当にわからない場合は、単に入力してください[]
。
追加した