2010-02-04 14 views
6

Duplicar posible:
What’s the difference between “Array()” and “[]” while declaring a JavaScript array?¿Cuál es la diferencia entre Array() y [] en Javascript y por qué debería usar uno sobre el otro?

En JavaScript puede crear una nueva matriz como:

var arr = new Array(); 

o igual que:

var arr2 = []; 

¿Cuál es la diferencia y por qué harías una sobre la otra?

+0

Por lo que yo sé, hace lo mismo. Use lo que prefiera. – zneak

+5

Dupe de http://stackoverflow.com/questions/931872/whats-the-difference-between-array-and-while-declaring-a-javascript-arr/1273936#1273936 –

+0

wow, loco que el detector de dupe no hizo Detecto esto cuando hice la pregunta. Las preguntas son casi idénticas ... – cmcculloh

Respuesta

4

new Array(2) proudces un conjunto de tamaño , que contiene dos undefined s. [2] produce una matriz de tamaño , que contiene el número . new Array IMO no encaja con el espíritu de JavaScript, aunque puede hacer que la construcción de matrices sea mucho más fácil de encontrar. Eso puede o no tener importancia (uso literales casi exclusivamente en JavaScript para todos los tipos aplicables, y he creado/mantenido grandes piezas de JavaScript [30-50 KLOC] con éxito).

edición supongo que las razones sazonados javascript programadores evitar new Array sintaxis son:

  • no se comporta de manera uniforme en los números de argumentos y tipos ((new Array(X)).length == 1 para cualquier X, siempre y cuandotypeof(X) != "number"
  • es más detallado y lo único que obtienes es la irregularidad
+0

El primer punto es perfecto. Eso es exactamente el tipo de cosa que estaba buscando. ¡Gracias! – cmcculloh

0

Creo que son idénticos. Nunca uso una nueva matriz();

+0

Estoy de acuerdo, dos formas de hacer lo mismo – anthares

+1

pero ¿POR QUÉ no utilizas la nueva matriz()? Sé que la mayoría de los desarrolladores de JavaScript con "experiencia" no lo hacen, pero ¿por qué no? – cmcculloh

2

Otra razón (menor) para usar [] con preferencia a new Array() es que Array podría ser anulado (aunque nunca lo he visto suceder) y [] está garantizado para funcionar.

Array = "something"; 
var a = new Array(); // Fails 
var b = []; // Works 
Cuestiones relacionadas