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?

¿Fue útil?

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 [].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top