`for (let i = 0; i<10; i++) { ... }` should definitely NOT be parsed into `let (i=0) { for (; i<10; i++) { ... } }`. These two are definitely not equivalent, according to the spec.

There's a special behavior of `let` in a `for` loop header, that it not only is block-scoped to the for-loop, but indeed is block-scoped to **each iteration** of the loop. So, the transpilation equivalent would actually be more like:

```js
let (_i_ = 0) {
   for ( ; _i_ < 10; _i_++) {
      let (i = _i_) {
         ...
      }
   }
}
```
In fact, if you tried to transpile the `for (let i=0; i<10; i++) { ... }` via Google Traceur, you get something almost exactly like that.