3 ms·
> `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 reference
by AgentME 11y 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;
- _getify 11y ago> If you pass a reference to the x array to a function 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.
- AgentME 11y agoConst usage prevents a bug in my example directly above!