Ketika saya perlu mendeklarasikan array baru saya menggunakan notasi ini
var arr = new Array();
Tetapi ketika menguji secara online, misalnya pada jsbin , peringatan memberi sinyal kepada saya untuk "Gunakan notasi literal array []."
Saya tidak menemukan alasan untuk menghindari penggunaan konstruktor. Apakah dalam beberapa hal kurang efisien daripada menggunakan []
? Atau apakah itu praktik yang buruk?
Apakah ada alasan yang baik untuk menggunakan var arr = [];
bukan var arr = new Array();
?
javascript
Naigel
sumber
sumber
Jawaban:
Sebagian besar orang menggunakan
var a = []
karena Douglas Crockford mengatakan demikian .Alasannya termasuk perilaku tidak intuitif dan tidak konsisten dari
new Array()
:Perhatikan bahwa tidak ada cara
new Array()
untuk membuat array dengan hanya satu elemen angka yang telah ditentukan di dalamnya!Penggunaannya
[]
sebenarnya lebih efisien, dan lebih aman juga ! Dimungkinkan untuk menimpaArray
konstruktor dan membuatnya melakukan hal-hal aneh, tetapi Anda tidak dapat menimpa perilaku[]
.Secara pribadi, saya selalu menggunakan
[]
sintaks, dan demikian pula selalu menggunakan{}
sintaks di tempatnew Object()
.sumber
[]
memanggil konstruktor internal, bukan nilai apa pun yangArray.constructor
terjadi pada saat itu.Array
konstruktor: jsperf.com/new-arraySatu perbedaan signifikan adalah bahwa
[]
akan selalu menjadi contoh Array baru, sedangkannew Array
bisa dibajak untuk membuat objek yang berbeda .Dalam kode contoh saya, saya telah menjaga
Array
fungsi tersembunyi dari sisa ruang lingkup dokumen, namun kemungkinan besar jika Anda pernah mengalami masalah seperti ini bahwa kode tidak akan dibiarkan dalam penutupan yang bagus, dan akan kemungkinan sulit ditemukan.Penafian : Bukan ide yang baik untuk membajak
Array
konstruktor.sumber
untuk pemeliharaan, gunakan
[]
Literal array lebih dapat diprediksi, karena sebagian besar pengembang menggunakannya. Sebagian besar penggunaan array di luar sana akan menggunakan literal, dan ada nilai dalam membuat kode Anda cocok dengan apa yang digunakan pengembang lain.
untuk array kosong, gunakan
[]
Seperti yang ditunjukkan di sini , menggunakan literal untuk kosong dan beberapa elemen yang dikenal lebih gemuk daripada konstruktor Array.
untuk array dengan ukuran yang diketahui, gunakan
new Array(size)
Jika ukurannya diketahui, maka menggunakan konstruktor Array secara signifikan meningkatkan kinerja. Namun itu juga berarti Anda harus berurusan dengan array yang sudah 'tidak terdefinisi' mengisi semua nilai itu.
Seperti yang ditunjukkan di sini
Ini juga berfungsi untuk array yang sangat kecil juga .
sumber
Tidak, sebenarnya tidak ada alasan untuk menggunakan satu notasi di atas yang lainnya untuk Array kosong.
Namun, sebagian besar browser menunjukkan kinerja yang sedikit lebih baik
x = [];
daripada memanggil Constructor .Jika Anda perlu membuat Array dengan ukuran tertentu, Anda perlu menggunakan
x = new Array(10);
misalnya, yang akan membuat Array dengan 10undefined
slot.sumber
Cara tercepat untuk mendefinisikan array atau objek adalah cara literal, karena Anda tidak perlu memanggil konstruktor
sumber
var arr = [];
secara logis menggunakan konstruktor juga. Ini selalu merupakan konstruktor array bawaan, alih-alih fungsi apa pun yang saat ini digunakan oleh namanyaArray
.Keduanya hanya benar. Tetapi sebagian besar orang menggunakannya
var a = []
Tiga Cara untuk Menyatakan Array dalam JavaScript.
metode 1 : Kita dapat secara eksplisit mendeklarasikan sebuah array dengan kata kunci "baru" JavaScript untuk membuat array dalam memori (yaitu membuatnya, dan membuatnya tersedia).
metode 2 : kami menggunakan metode alternatif untuk mendeklarasikan array.
metode 3 : JavaScript juga memungkinkan Anda membuat array secara tidak langsung, dengan memanggil metode tertentu.
sumber
Ada batasan yang dapat diambil konstruktor sebagai argumen.
Pada kebanyakan sistem saya membatasi batasnya adalah 2 ^ 16 (2 byte):
Itu akan menyebabkan kesalahan (terlalu banyak argumen ....)
Saat menggunakan literal [] Anda tidak memiliki masalah seperti itu.
Jika Anda tidak peduli dengan array besar seperti itu, saya pikir Anda dapat menggunakan apa pun yang Anda suka.
sumber
adalah gula
adalah garam
sumber
Itu karena
new Array()
ambigu. Ini adalah konstruktor yang benar:sumber