Почти каждая статья, посвященная let и const, дает это неверное объяснение const.

Переменная const может быть изменена после ее объявления и назначения.

Переменная const не может быть переназначена после ее объявления.

Даже TypeError, выдаваемый при попытке переоценки переменной const, проясняет это:

const obj = { a: 1};
obj.a = 2; // no problem obj is now changed to { a: 2 }
obj = { a: 2 }; // Uncaught TypeError: Assignment to constant variable.

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

Это нехорошо, потому что const следует всегда использовать, а let следует использовать только в крайнем случае, т. е. при использовании примитива или объекта, который необходимо переназначить.

const arr = [];
for (let i=0; i < 3; i++) {
  arr.push(i);
}
// arr = 10) [0, 1, 2]
const obj = {};
for (const c of ['a', 'b', 'c']) {
  obj[c] = c;
}
// obj = { a: "a", b: "b", c: "c" }