¿Cuál es la notación de matriz literal en javascript y cuándo se debe usar?
-
11-09-2019 - |
Pregunta
JSLint me está dando este error:
Problema en la línea 11 de caracteres. 33: Utilice la matriz notación literal []
var myArray = new Array();
¿Cuál es la notación de matriz literal y por qué es lo que quiere que lo use en su lugar?
Se muestra aquí que new Array();
debería funcionar bien ... ¿hay algo que me falta?
Solución
literal de matriz notación es donde se define una nueva matriz mediante soportes vacías. En su ejemplo:
var myArray = [];
Es la "nueva" manera de definir matrices, y supongo que es más corto / más limpio.
Los ejemplos siguientes explican la diferencia entre ellos:
var a = [], // these are the same
b = new Array(), // a and b are arrays with length 0
c = ['foo', 'bar'], // these are the same
d = new Array('foo', 'bar'), // c and d are arrays with 2 strings
// these are different:
e = [3], // e.length == 1, e[0] == 3
f = new Array(3); // f.length == 3, f[0] == undefined
referencia ¿Cuál es la diferencia entre “Array ()” y “[]”, mientras que declarar un JavaScript matriz?
Otros consejos
Vea también: ¿Qué pasa con var x = new Array ();
Aparte del argumento Crockford, creo que se debe también al hecho de que otros idiomas tienen estructuras de datos similares que suceden a utilizar la misma sintaxis; por ejemplo, Python tiene listas y diccionarios ; ver los ejemplos siguientes:
// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]
// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}
¿No es estupendo como Python también es gramaticalmente correcta Javascript? (Sí, los que terminan punto y coma faltan, pero los que no son necesarios para Javascript, tampoco)
De este modo, mediante la reutilización de los paradigmas comunes en la programación, que salvar a todos de tener que volver a aprender algo que no debería tener que hacerlo.
Aparte del argumento Crockford, jsPerf dice que es más rápido. http://jsperf.com/new-vs-literal-array-declaration
Después de mirar jsperf @ecMode, hice algunas pruebas adicionales.
Cuando se utiliza Pulsa para añadir a la matriz new Array () es considerablemente más rápido en Chrome:
http://jsperf.com/new-vs-literal-array- Declaración / 2
El uso de índice de añadir es ligeramente más rápido para [].