let in loops

Salvador de la Puente González salva at unoyunodiez.com
Mon Aug 25 03:16:43 PDT 2014


Does it only work for `for` loops, or it is the same for any block?


On Mon, Aug 25, 2014 at 11:46 AM, Andrea Giammarchi <
andrea.giammarchi at gmail.com> wrote:

> That is an intended behavior, you can see that `let` loop in this way,
> metaphorically speaking:
>
> ```js
> function test() {
>   for (var i=0; i<10; i++) {
>     (function(i){
>       setTimeout(() => console.log(i));
>     }.call(this, i));
>   }
> }
> ```
>
> except after the loop no variable `i` with last loop value will be
> accessible  in that scope.
>
> Regards
>
>
>
> On Mon, Aug 25, 2014 at 11:32 AM, Salvador de la Puente González <
> salva at unoyunodiez.com> wrote:
>
>> Hello, recently I read about `let` inside for loops. According to
>> https://leanpub.com/understandinges6/read#leanpub-auto-block-bindings
>>
>> `let` allows the developer to make:
>>
>> ```js
>> function test() {
>>   for (let i=0; i<10; i++) {
>>     setTimeout(() => console.log(i));
>>   }
>> }
>> ```
>>
>> And this will print 0, 1, 2... instead of 10, ten times. Why? Is `let`
>> involving more than a "avoid-hoisting" behavior? Is it an intended behavior
>> or is a side effect in the `let` semantics?
>>
>> Thank you.
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140825/a9ed2a0e/attachment.html>


More information about the es-discuss mailing list