3

アレイを作成するこれらの3つの方法に違いはありますか?そうでない場合、最初の2つの方法が単なるコードであるのに、なぜ存在するのでしょうか。

1:

var myCars=new Array(); 
myCars[0]="Saab";       
myCars[1]="Volvo";
myCars[2]="BMW";

2:

var myCars=new Array("Saab","Volvo","BMW");

3:

var myCars=["Saab","Volvo","BMW"];
4

3 に答える 3

6

を使用[]するよりも安全で信頼性が高くなりnew Array()ます。実際には前者をお勧めします。これは、の値をArray上書きできるためです。また、に[]比べて高速new Array()です。

これらの関連する質問を見てください:

関連リンク:

「オーバーライド」の意味を明確にするために、次のようにすることができます。

function Array() {
    alert("I am not really an array! BWAHAHAHAHAHA!");
}

今、あなたがそうするとき、あなたはnew Array();警告を受け取ります、それは明らかにあなたが望むものではありません。

要するに、実際に使用する必要はなくnew Array()、文字通りのを使用する場合と比較して、何も購入する必要はありません[]

于 2013-03-12T18:10:04.997 に答える
1

違い:

1番目の方法では、配列の宣言と配列の初期化が別々に行われます。2番目と3番目のメソッドでは、配列の宣言と配列の初期化が1つのステートメントで実行されます。3rdは、2ndメソッドの省略形です。

必要:

ケース1:現在車がないが、将来は車を購入する予定であるとします。

var myCars = new Array();

ケース2:今日2台の車を所有しているとしましょう。しかし将来的には、1台以上の車を売買する可能性があります。

var myCars = new Array("BMW", "Porsche");

結論として、事前にデータを知っている場合は2番目または3番目の方法を使用しますが、事前にデータを知らない場合は1番目の方法を使用します。

于 2013-03-12T18:17:45.140 に答える
0

配列の場合、読みやすさとプレーン表記のわずかなパフォーマンス上の利点を除いて、2つのアプローチの間に大きな違いはありません。

ただし、一般的に推奨される方法は、JavaScriptで可能な場合は、これらをコンストラクターでラップするのではなく、プレーン表記を使用することです。'new Array()'と'new Object()'はとと同じものを生成しますが、プリミティブにコンストラクターを使用する[]{}、実際に問題が発生する可能性があります。

たとえばnew String()、プリミティブ文字列ではなくStringオブジェクトを作成します。===これには、文字列での使用や他の比較を防ぐという欠点があります。

例えば

 alert(new String("") === new String("")); //false alert ("" === "")
 //true

したがって、この特定のケースに違いはありませんが、一般に、組み込み型のコンストラクターを使用するよりも、基本的な表記法を使用する習慣を身に付ける方がよいでしょう。

明確化

私が違いがないと言うとき、私は一般的な場合、それらの表記法が同じ結果を生み出すことを意味します。Vivinのポイントは優れており、この表記を避けるもう1つの理由です。

于 2013-03-12T18:16:13.543 に答える