No hay una gran diferencia entre estas definiciones, excepto que la primera forma utiliza la matriz/objeto literal y la segunda la matriz/objeto constructor.
El constructor de la matriz puede arrojar resultados diferentes, dependiendo del número de argumentos pasados. Si pasa un solo argumento, se crea una nueva matriz vacía de la longitud de ese argumento. Por ejemplo:
// arr1 is the same as arr2
var arr1 = new Array(1, 2, 3, 4);
var arr2 = [1, 2, 3, 4];
alert(arr1.length == arr2.length); // true
alert(arr1[0]); // 1
alert(arr2[0]); // 1
Pero, pasando de uno Resultados argumento diferente:
// arr3 has length 200 and is empty, while arr4 has length 1 and contains a number
var arr3 = new Array(200);
var arr4 = [200];
alert(arr3.length == arr4.length); // false
alert(arr3[0]); // 'undefined'
alert(arr4[0]); // 200
La forma más rápida para definir una matriz u objeto es, por supuesto, la forma literal, porque no lo hace Necesito llamar al constructor primero. De todos modos, la diferencia de velocidad real es insignificante, realmente.
hice un speed test en Chrome 6, en el que he definido 10000000 20 veces la misma matriz 1, 2, 3
, que dio los siguientes resultados:
Average speed per 10000000 calls
Array Constructor : 226.55 ms
Array Literal : 159.1 ms
Como se puede ver, la matriz literal es más rápido por 67,45ms 10000000 definiciones de matriz.
Buena pregunta! En mi opinión, desde un punto de vista de belleza de código, 'new Array()' se ve mucho más limpio. Interesado en ver qué surge. –
La víctima propuesta no menciona objetos. –