Close review of Language Overview whitepaper

Cormac Flanagan cormac at
Sat Nov 17 20:08:04 PST 2007

Hi Maciej,

Thanks for your feedback! Two additional comments...

> "Any": The spec explains vaguely that the "any" type is not identical
> to the union (null, undefined, Object). How is it different? Is the
> difference observable to ES4 programs or is it purely a matter
> internal to the spec (in which case the difference is not relevant)?

The essential difference is in strict mode, where a variable of type
"Any" can be passed to a context expecting a more specific type (say
int), and "Any" gets implicitly downcast. In contrast, passing "(null,
undefined, Object)" or even "Object" to somewhere expecting an int
would be a verify-time error.

> "switch type" statement: I guess this beats switching on typeof, but
> is it really significantly better than a series of "if" statements
> using the "is" operator?

Well, you'd need a bunch of cast operations too, at least in strict
mode, and it gets a little ugly/verbose.

- Cormac

More information about the Es4-discuss mailing list