Pergunta

O JSLINT está me dando este erro:

Problema na linha 11 caractere 33: use a notação literal da matriz [].

var myArray = new Array();

O que é notação literal da matriz e por que isso quer que eu a use?

Mostra aqui que new Array(); Deve funcionar bem ... há algo que estou perdendo?

Foi útil?

Solução

A notação literal da matriz é onde você define uma nova matriz usando apenas colchetes vazios. No seu exemplo:

var myArray = [];

É a "nova" maneira de definir matrizes, e suponho que seja mais curta/mais limpa.

Os exemplos abaixo explicam a diferença entre eles:

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

Referência: Qual é a diferença entre "Array ()" e [] ao declarar uma matriz JavaScript?

Outras dicas

Veja também: O que há de errado com var x = new Array ();

Além do argumento de Crockford, acredito que também se deve ao fato de que outros idiomas têm estruturas de dados semelhantes que usam a mesma sintaxe; por exemplo, Python tem listas e dicionários; Veja os seguintes exemplos:

// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]

// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}

Não é legal como o Python também está gramaticalmente correto JavaScript? (Sim, falta os semi-corons finais, mas esses não são necessários para JavaScript) também)

Assim, ao reutilizar paradigmas comuns na programação, salvamos todos de ter que reaprender algo que não deveria.

Além do argumento de Crockford, Jsperf diz que é mais rápido. http://jsperf.com/new-vs-literal-array-declaration

Depois de olhar para o @ecmode jsperf, fiz alguns testes adicionais.

Ao usar o push para adicionar à matriz new Array () é consideravelmente mais rápido no Chrome:

http://jsperf.com/new-vs-literal-array-declaration/2

O uso do índice a ser adicionado é um pouco mais rápido para [].

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top