`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

Reply via email to