`String#split` already is iterable because it returns an array. What it isn't is **lazy**.
To be equivalent to the for code, the let needs to go inside the body of the while, not outside. This neatly demonstrates the key point: - as it stands, writing this kind of code tends to be bug prone (i.e. people get it wrong in confusing ways) - it would be less bug prone if there was just a method that returned an iterable. That _could_ be an Array, rather than a lazy collection. On 27 Aug 2013, at 01:20, "Andrea Giammarchi" <[email protected]<mailto:[email protected]>> wrote: ```javascript {let m; while(m = re.exec(str)) { // ... no, really }} ``` I don't get the need of this but if this is the trend then String#split needs an iterable too (no!) On Mon, Aug 26, 2013 at 4:23 PM, Brendan Eich <[email protected]<mailto:[email protected]>> wrote: Andrea Giammarchi wrote: Is it very useful because you wrote for instead of while ? ```javascript while (m = re.exec(str)) console.log(m[0]) ; ``` It is, for two reasons: 1. in JS only for can have a let or var binding in the head. 2. the utility extends to all for-of variations: array comprehensions, generator expresisons. /be _______________________________________________ es-discuss mailing list [email protected]<mailto:[email protected]> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

