Почему так👇



Это висящие запятые («Trailing commas», также встречается название Замыкающие запятые «final commas»). Они могут быть полезны при добавлении в JavaScript-код новых элементов, параметров или свойств.



Если вы хотите добавить новое свойство, то просто добавляете новую строку без изменения предыдущей последней строки, если в этой строке уже есть висящая запятая.



JavaScript с самого начала допускал использование висящих запятых в литералах массива, а затем добавил их в литералы объекта (ECMAScript 5), а в ECMAScript 2017 и к параметрам функций. Висящие запятые так же можно использовать при использовании деструктурирующего присваивания.



Однако, JSON не допускает висящих запятых.



JavaScript игнорирует висящие запятые в массивах:



var arr = [

1,

2,

3,

];



console.log(arr); // (3) [1, 2, 3]

console.log(arr.length); // 3



Если использовано больше одной висящей запятой, будут созданы "дырки". Массив с "дырками" называется разреженным (плотный массив не имеет "дырок").



При итерации массива при помощи, например, forEach() или map(), "дырки" будут пропущены:



var arr = [1, 2, 3,,,];

arr.length; // 5



📌 Подробнее про висящие запятые, а также примеры, написанные выше, можно найти в MDN Web Docs по ссылке.