From: Sam Tobin-Hochstadt
> This is close, but not quite right. The rule is that any unbound variables
> in modules are errors. The variables may be bound by import declarations, or
> by lexical bindings such as `var` or `let`, or by bindings on the global
> object, or by top-level `let` bindings (which are not on the global object,
> IIRC).
Is this correct then?
```js
Date.now();
```
is checked at compile time and found to be OK, because it is referencing a
binding that is a property of the global object that exists at the time of
static-checking. But
```js
setTimeout(() =>
asdf(); // (A)
}, 5000);
setTimeout(() =>
window.asdf = () =>; // (B)
}, 1000);
```
is checked at compile time and found to *error*, because (A) is referencing a
binding that is a not a property of the global object at the time of static
checking? (Assuming an `asdf` binding is not introduced through any of the
other mechanisms you mention.) And this is true even though (B) adds such a
property to the global object before (A) ever runs?
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss