UNPKG

defs

Version:

Static scope analysis and transpilation of ES6 block scoped const and let variables, to ES3.

20 lines (16 loc) 821 B
# Semantic differences between original ES6 and transpiled ES3 ### Referenced (inside closure) before declaration `defs.js` detects the vast majority of cases where a variable is referenced prior to its declaration. The one case it cannot detect is the following: ```javascript function printx() { console.log(x); } printx(); // illegal let x = 1; printx(); // legal ``` The first call to `printx` is not legal because `x` hasn't been initialized at that point of *time*, which is impossible to catch reliably with statical analysis. `v8 --harmony` will detect and error on this via run-time checking. `defs.js` will happily transpile this example (`let` => `var` and that's it), and the transpiled code will print `undefined` on the first call to `printx`. This difference should be a very minor problem in practice.