Использование строкового разделения вместо массива объявления массива с подстроками

Я часто замечаю, когда люди разделяют строку подстрок вместо того, чтобы просто объявлять массив необходимых строк.

Пример в moment.js:

langConfigProperties = 'months|monthsShort|weekdays|weekdaysShort|weekdaysMin|longDateFormat|calendar|relativeTime|ordinal|meridiem'.split('|'),

Пример в jQuery

 "Boolean Number String Function Array Date RegExp Object".split(" ")

В чем причина предпочтения такого рода?

Ответ 1

Это медленнее использовать .split, но имеет то преимущество, что код может быть короче (меньше символов):

var array = 'months|monthsShort|weekdays|weekdaysShort|weekdaysMin|longDateFormat|calendar|relativeTime|ordinal|meridiem'.split('|');
var array = ['months','monthsShort','weekdays','weekdaysShort','weekdaysMin','longDateFormat','calendar','relativeTime','ordinal','meridiem'];

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

Длина, добавленная разделителем в разделенной версии, равна 11 + 1 * n, где n - количество элементов, 11 - для .split('|')
Для версии массива 2 + 3 * (n - 1), 2 для [].

Это означает, что как только у вас будет 6 элементов, версия .split короче:

for(var i = 5; i < 8; i++){
    console.log('Elements:', i, 'split:', 11 + (i-1), 'array:', 2 + 3 * (i-1));
}
// Elements: 5 split: 15 array: 14
// Elements: 6 split: 16 array: 17
// Elements: 7 split: 17 array: 20