|
|
|
|
|
by AgentME
3937 days ago
|
|
> `const x = 2` feels great emotionally, but `const x = [2]` has the feeling of safety without any of the guarantee. Const is perfectly sensible with references to mutable objects too. The latter guarantees that x will always point to the same mutable array. If you pass a reference to the x array to a function which needs to mutate that specific array or observe it for changes, then it may be important that x is never rebound to a different array. Consider the following code: const x = [5,6,7];
Object.observe(x, function(changes) {
console.log('changes', changes);
});
// ...
// time to clear the array
// WRONG! The code observing changes to the old x array will not see
// this change or future changes to this new array. Because we used const, this
// will trigger an error and immediately show us our mistake.
x = [];
// CORRECT. This mutates the array instead of creating a new empty array.
x.length = 0;
|
|
This notion (concern) is meaningless in JS, since when you pass any reference, it's always a reference-copy, so there's no value nor assistance that `const` provides.