В JavaScript, почему [] предпочтен по новому Массиву ();?

Мой любимый синтаксический анализатор даты и времени DateTime:: Формат:: ISO8601, Как только у Вас есть та работа, Вы сделаете, чтобы DateTime возразил, легко конвертируемый к секундам эпохи с эпохой ()

16
задан Donald Duck 29 April 2018 в 12:56
поделиться

4 ответа

Краткость

В нем меньше байтов для передачи по сети меньше байтов для интерпретации, меньше умственных ресурсов для анализа.

Меньше значит больше.

Согласованность

В чем разница между этими двумя строками кода?

var arr = [5];
var arr = new Array(5);

Согласно ] здесь new Array (5); не будет возвращать массив с 5 в нем, вместо этого он вернет массив из 5 элементов, все элементы которого undefined . В то время как эти две строки возвращают идентичные массивы.

var arr = [5,6];
var arr = new Array(5,6);
35
ответ дан 30 November 2019 в 15:14
поделиться

Одной из веских причин является то, что конструктор Array ведет себя не интуитивно. Например:

var a = new Array(5);
console.log(a.length); //prints "5"
console.log(a[0]); //prints "undefined"

var b = new Array(1,2);
console.log(b.length); //prints "2"
console.log(b[0]); //prints "1"

В этом случае a оказывается массивом размера 5 со всеми неопределенными элементами, а b оказывается массивом размера 2 со значениями [1,2].

var c = new Array("5");
console.log(c.length); //prints "1"
console.log(c[0]); //prints "5"

И здесь, вы получите одноэлементный массив, содержащий «5»

В общем, вам, вероятно, не следует никогда использовать конструкторы для встроенных типов в Javascript. У всех есть такие странные крайние случаи. Например:

var s = new String("Hello");
var l = "Hello";
console.log(typeof(s)); // prints "object"
console.log(typeof(l)); // prints "string"
23
ответ дан 30 November 2019 в 15:14
поделиться

Элегантность

Проще говоря, это просто выглядит лучше И программисту легче разбираться, особенно для более сложных структур данных:

var a = [
    ['a list', 'of', 'strings'],
    [1, 2, 3, 4],
    { hello: "This is an object property." }
];

По сравнению с более неуклюжим Метод, ориентированный на ООП:

var a = new Array();
var a2 = new Array();

a2.push('a list');
a2.push('of');
a2.push('strings');

var a3 = new Array();
a3.push(1);
a3.push(2);
a3.push(3);
a3.push(4);

var o = new Object();
o.hello = "This is an object property";
a.push(a2, a3, o);
8
ответ дан 30 November 2019 в 15:14
поделиться

новый массив (1, 2, 3) вместо [1, 2, 3] то же самое, что новая строка ("корова" ) вместо «корова»

-1
ответ дан 30 November 2019 в 15:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: