<div dir="ltr">sure you know everything as soon as you read `of` ... right ? How objectives are your points ? If you know JS that while looks very simple, IMO</div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Tue, Aug 27, 2013 at 5:24 AM, Claude Pache <span dir="ltr"><<a href="mailto:claude.pache@gmail.com" target="_blank">claude.pache@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Le 27 août 2013 à 01:23, Brendan Eich <<a href="mailto:brendan@mozilla.com">brendan@mozilla.com</a>> a écrit :<br>
<div><div class="h5"><br>
> Andrea Giammarchi wrote:<br>
>> Is it very useful because you wrote for instead of while ?<br>
>><br>
>> ```javascript<br>
>> while (m = re.exec(str))<br>
>>  console.log(m[0])<br>
>> ;<br>
>> ```<br>
><br>
> It is, for two reasons:<br>
><br>
> 1. in JS only for can have a let or var binding in the head.<br>
><br>
> 2. the utility extends to all for-of variations: array comprehensions, generator expresisons.<br>
><br>
> /be<br>
<br>
</div></div>There is a third reason. The syntax:<br>
<br>
```javascript<br>
for (let m of re.execAll(str) {<br>
        // ...<br>
}<br>
```<br>
<br>
has the clear advantage to express the intention of the programmer, and *nothing more*. It does not require good knowledge of the details of the language to understand what happens.<br>
<br>
Indeed, when I read `while(m = re.exec(str))`, I really have to analyse the following *additional* points:<br>
* `=` is not a typo for `==` (here, some annotation would be useful);<br>
* `RegExp#exec` returns a falsy value if *and only if* there is no more match;<br>
* `re` has its global flag set, and its `.lastIndex` property has not been disturbed.<br>
<br>
All these tricks are unrelated to the intention of the programmer, and are just distracting points, especially for any reader that use only occasionally `RegExp#exec` with the global flag set.<br>
<br>
In summary, citing [1]: "Don’t be clever, don’t make me think."<br>
<br>
—Claude<br>
<br>
[1] <a href="http://www.2ality.com/2013/07/meta-style-guide.html" target="_blank">http://www.2ality.com/2013/07/meta-style-guide.html</a><br>
<br>
<br>
</blockquote></div><br></div>