<i>`const` has this caveat that it&#x27;s only about assignment bindings and not about values.</i><p><i>Imagine a piece of code that has `const x = 2` that you later refactor to `const x = [2]`. The complexity is, you now have to contend with the `[2]` being a mutable value where `2` wasn&#x27;t, and `const` sorta pretends to keep you safe but doesn&#x27;t.</i><p>If these semantics aren&#x27;t instantly obvious to you, then that&#x27;s emblematic of a serious gap in your understanding of programming. I say this not with the intent of shaming, but to recommend that you (and the very many other people with the same lapse) invest some time into developing intuition about reference semantics. The best way IMO is to get initmately familiar with a language that has first class pointers or otherwise explicit indirection. Learn C, get good at C, write something big in C. Focus on the pointer semantics and you&#x27;ll come out a significantly better programmer in languages where pointers are slightly less immediately visible.<p>Of course if you&#x27;re making this recommendation because you work with other people who have a lapse in their understanding of references I can understand that. I would encourage you, however, to try to fix the problem rather than work around it by stunting the language. After all, it&#x27;s an issue that will crop up everywhere, not just the semantics of `const&#x27;.