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 Best Regards On Fri, Dec 20, 2013 at 11:25 AM, Dean Landolt <d...@deanlandolt.com> wrote: > > > > On Fri, Dec 20, 2013 at 2:14 PM, Andrea Giammarchi < > andrea.giammar...@gmail.com> wrote: > >> This is not helping ... yeah, apples-to-orange, as you wish .. now to >> imagine you have a flexible understanding of the issue and the example I >> was proposing so that: >> >> if (stuff) { >> const WHATEVER = 1; >> } else { >> const WHATEVER = 2; >> } >> >> two blocks, one const assigned with possibly only one value >> >> Now tell me again how this works in C ... >> > > As written above this couldn't possibly work in C -- const is block level, > right? Originally you wrote this with #ifdefs, which aren't blocks. This > isn't even close to apples-to-apples. > > So are you suggesting that js grow a preprocessor? That block scoping > shouldn't *really* mean block scoping? Or that const shouldn't *really*mean > const? Best I can tell it could only be one of those three -- and they > all sound bad to me. > > > >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss