Brendan Eich wrote:
> The language may not support too many binding forms. The TC39 committee
> probably won't. Both let and const as block-scoped bindings in the style
> of var (but with use before set of a const illegal, and with const
> having a mandatory initialiser even though it saves implementations no
> cost) seem supported by those who spoke up at the last meeting.
So to convert these vars into consts...
if (Debugging)
{ var DatabaseName = "TestDatabase";
var DisplayCount = 5;
... Ten more ...
}
else
{ var DatabaseName = "RealDatabase";
var DisplayCount = 15;
... Ten more ...
}
...we'll have to write something like this?
const
{ DatabaseName,
DisplayCount,
... Ten more ...
} =
Debugging ?
{ DatabaseName: "TestDatabase",
DisplayCount: 5,
... Ten more ...
}
:
{ DatabaseName: "RealDatabase",
DisplayCount: 15,
... Ten more ...
};
Very often conditionals aren't that simple. It'll get ugly. The
new awkwardness does makes sense in big projects, but only there.
> let
> blocks and let expressions do not have solid support in TC39.
I have no opinion on whether let blocks and let expressions
are useful, but you could make them very cheap by dropping the
intricacies that make let(x=x){} refer to two different x'es:
let (a = x) {...} desugars to {let a = x; ...}
let (a = x) a; desugars to {let a = x; a;}
As a bonus everyone will rejoice at the lessened cognitive burden
of intricacies.
Of course Schemers will find a let with these semantics confusing.
Clearly it needs a different name. How about... "local"? :-D
--
Ingvar von Schoultz
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss