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

No JSLint, ele adverte que

var x = new Array(); 

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

 var result = []; 

O que há de errado com a 1ª syntax? Qual é o raciocínio por trás da sugestão?

Crockford não gosta de new . Portanto, o JSLint espera que você o evite quando possível. E criar um novo object de matriz é possível sem usar o new ….

É mais seguro usar [] do que usar o new Array() , porque você pode realmente sobrepor o valor do Array em JavaScript:

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

Em outras palavras, [] não é ambíguo.

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

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

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

Nada de errado com qualquer forma, mas você geralmente vê literais usados ​​sempre que possível.

var s = ” não é mais correto que var s = new String () ….

Não há nada de errado com a primeira syntax em si. Na verdade, em w3schools , ele lista o new Array() como o caminho para criar um array. O problema é que este é o “jeito antigo”. A “nova maneira”, [] é mais curta, e permite inicializar valores na matriz, como em ["foo", "bar"] . A maioria dos desenvolvedores prefere [] ao new Array() em termos de bom estilo.