Когда константы в JavaScript можно изменять

В ES6 ввели ключевое слово const с помощью которого можно объявить константу.

const PI = 3.141592653589793;

// теперь все эти действия приведут к ошибкам
PI = 0;  
PI++;  
var PI = 0;  
let PI = 0;  
const PI = 0;  

Однако, ключевое слово const не означает что значение не изменяемо, оно означает что присвоение значения можно сделать только один раз. Если значением константы является ссылочный тип (например, объект или массив), то его вполне можно будет менять:

const names = [];  
names.push('John');  

Таким образом константы в JavaScript нельзя менять только если значением является примитивный тип.