O que há de errado com var x = new Array ();

votos
36

Em JSLint, ele adverte que

var x = new Array();

(Isso não é um nome de variável real) deve ser

var result = [];

O que está errado com o 1º sintaxe? Qual é o raciocínio por trás da sugestão?

Publicado 19/05/2009 em 22:38
fonte usuário
Em outras línguas...                            


5 respostas

votos
69

É mais seguro usar []do que está a usar new Array(), porque você pode realmente substituir o valor de Arrayem JavaScript:

Array = function() { };

var x = new Array();
// x is now an Object instead of an Array.

Em outras palavras, []é inequívoca.

Respondeu 19/05/2009 em 22:46
fonte usuário

votos
26

Não Crockford não gostanew . Portanto, JSLint espera que você evitá-lo quando possível. E criando um novo objeto de matriz é possível sem o uso new....

Respondeu 19/05/2009 em 22:47
fonte usuário

votos
7

Parece que você pode obter um desempenho diferente com base no que você está usando e para que finalidade, dependendo do navegador ou do ambiente:

http://jsperf.com/new-array-vs-literal/11 ([1, 0,2] vs nova matriz (1, 0,2)) a literal é muito mais rápido nesta circunstância.

http://jsperf.com/new-array-vs-literal/7 (nova matriz (500,000) vs [] .length (500000)) nova matriz é mais rápido em v21 cromo parece para este teste de cerca de 7% ou 30 %) dependendo do que você faz.

Respondeu 09/08/2012 em 19:41
fonte usuário

votos
4

Nada de errado com qualquer forma, mas você costuma ver literais usados ​​sempre que possível-

var s = '' não é mais correto do que var s = new String () ....

Respondeu 19/05/2009 em 23:47
fonte usuário

votos
2

Não há nada de errado com a primeira sintaxe per se. De fato, em w3schools , ele lista new Array()como a maneira de criar uma matriz. O problema é que este é o "caminho velho". O "novo caminho", []é mais curto, e permite que você inicializar os valores na matriz, como em ["foo", "bar"]. A maioria dos desenvolvedores preferem []que new Array()em termos de bom estilo.

Respondeu 19/05/2009 em 22:50
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more