Andrea Giammarchi (2013-12-20T20:33:08.000Z)
domenic at domenicdenicola.com (2014-01-06T13:51:35.634Z)
I am suggesting that const should: 1. reserve the const name for the whole scope (similar to var) 2. if assigned, keep that value and throw if re-assigned 3. if not assigned, having the very first assignment "seal the deal" and throw to any other re-assignment attempt In JS code, so we get eventually rid of that silly C example I put on the plate, a const in the global scope should be like the following, but the logic should be per scope and not per context. ```javascript Object.defineProperty(window, 'NAME', { configurable: true, get: function () { return void 0; }, set: function (value) { Object.defineProperty(this, 'NAME', {value:value}); // eventually with a getter instead and a setter // that instantly throw Errors } }); ``` *However* I would rather improve try/catch so that const are easier to assign as these are now, without forgetting as Brendan said about the value, and many other handy situations might be solved without needing to create garbage around the try/catch I've realized indeed thanks to Andreas hint that the problem about creating garbage around a constant assignment is rather about the current try/catch implementation and the fact it does not work inline as expression. As summary: forget const, please improve the try/catch ... this will make life easier in many situations