結論
タイトルの答えは「YES。変えられる。」
理由
「JavaScriptでconstの配列の値が変わる理由」という記事を読んだところ、
constの値は不変ということではなく、変数識別子が再代入できないというだけだからだ。
というのが結論だったが、実際の挙動も確かめたかったので手を動かしてみた。
実行できるパターン
1.インデックスを指定した値の代入
const arr1 = [];
arr1[0] = 'a';
console.log(arr1);
// 実行結果
// [ 'a' ]
2. 要素の追加
const arr2 = [];
arr2.push('b');
console.log(arr2);
// 実行結果
// ['b']
3.要素の削除
const arr3 = [1, 2, 3];
arr3.splice(1, 1);
console.log(arr3);
// 実行結果
// [ 1, 3 ]
4. 参照している配列への要素の追加
const arr4 = [1, 2, 3];
const arr5 = arr4;
arr5[0] = 'c';
console.log(arr4);
console.log(arr5);
// 実行結果
// ['c', 2, 3]
// ['c', 2, 3]
実行できないパターン
配列自体への再代入
const arr6 = [1, 2, 3];
arr6 = [4, 5, 6];
// 実行結果
// arr6 = [4, 5, 6];
// ^
// TypeError: Assignment to constant variable.
まとめ
配列の中身の操作や再代入に関しては、要素を追加しようが消そうが怒られることなく実行できた。
ただし「配列それ自体への再代入」はできなかった。