On Sun, Mar 17, 2013 at 11:44 PM, Domenic Denicola <dome...@domenicdenicola.com> wrote: > > 1. implicit global variable creation > 2. `with` > 3. `delete`ing free variables > 4. `eval` introducing local bindings > > 2 and 4 make perfect sense, but I don't understand how 1 and 3 interfere with > static scoping. In particular, given a language with no `with` and with > ES5-strict semantics for `eval`, I was unable to contrive scenarios where > implicit global variable creation or `delete`ing a free variable introduced > an ambiguity in the scope chain that prevented static knowledge of what an > identifier referred to. > > Does anyone have any idea how 1 and 3 interfere with static scoping?
The point is that given these features, you can't predict statically whether a variable reference is bound to a global variable, or is unbound and will produce a ReferenceError. Here's case 1: if (something_random()) window.xxx = 7; xxx; // ReferenceError or not? And here's case 3: if (something_else_random()) delete xxx; xxx; // ReferenceError or not? Sam _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss