&gt; `const x = 2` feels great emotionally, but `const x = [2]` has the feeling of safety without any of the guarantee.<p>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:<p><pre><code>    const x = [5,6,7];

    Object.observe(x, function(changes) {
      console.log(&#x27;changes&#x27;, changes);
    });

    &#x2F;&#x2F; ...
    &#x2F;&#x2F; time to clear the array

    &#x2F;&#x2F; WRONG! The code observing changes to the old x array will not see
    &#x2F;&#x2F; this change or future changes to this new array. Because we used const, this
    &#x2F;&#x2F; will trigger an error and immediately show us our mistake.
    x = [];

    &#x2F;&#x2F; CORRECT. This mutates the array instead of creating a new empty array.
    x.length = 0;</code></pre>