Почему так👇
Это висящие запятые («Trailing commas», также встречается название Замыкающие запятые «final commas»). Они могут быть полезны при добавлении в JavaScript-код новых элементов, параметров или свойств.
Если вы хотите добавить новое свойство, то просто добавляете новую строку без изменения предыдущей последней строки, если в этой строке уже есть висящая запятая.
JavaScript с самого начала допускал использование висящих запятых в литералах массива, а затем добавил их в литералы объекта (ECMAScript 5), а в ECMAScript 2017 и к параметрам функций. Висящие запятые так же можно использовать при использовании деструктурирующего присваивания.
Однако, JSON не допускает висящих запятых.
JavaScript игнорирует висящие запятые в массивах:
Если использовано больше одной висящей запятой, будут созданы "дырки". Массив с "дырками" называется разреженным (плотный массив не имеет "дырок").
При итерации массива при помощи, например, forEach() или map(), "дырки" будут пропущены:
📌 Подробнее про висящие запятые, а также примеры, написанные выше, можно найти в MDN Web Docs по ссылке.
Если вы хотите добавить новое свойство, то просто добавляете новую строку без изменения предыдущей последней строки, если в этой строке уже есть висящая запятая.
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