Skip to content

Instantly share code, notes, and snippets.

@FoxMalder
Forked from zmts/forVarLetClosure.md
Created January 10, 2021 19:26
Show Gist options
  • Save FoxMalder/0db20e45e0c77cfdbf321c44aaa15aec to your computer and use it in GitHub Desktop.
Save FoxMalder/0db20e45e0c77cfdbf321c44aaa15aec to your computer and use it in GitHub Desktop.

Revisions

  1. @zmts zmts revised this gist Aug 16, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion forVarLetClosure.md
    Original file line number Diff line number Diff line change
    @@ -24,7 +24,7 @@ for(var i = 0; i < 5; i++) {
    ## let

    ```
    for(var i = 0; i < 5; i++) {
    for(let i = 0; i < 5; i++) {
    setTimeout(function() {
    console.log(i);
    }, 1000);
  2. @zmts zmts renamed this gist Apr 16, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion JS.md → forVarLetClosure.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # Javascipt. Closure. Event loop
    # Javascipt. For. Var. Let. Closure. Event loop.

    ## var

  3. @zmts zmts revised this gist Apr 16, 2018. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -35,4 +35,5 @@ for(var i = 0; i < 5; i++) {
    // >> 2
    // >> 3
    // >> 4
    ```
    ```
    `let` создает переменную в рамках блока `{}`. Иначе говоря `let` с каждым повторением цикла создает отдельный `scope`. Каждому повторению цикла соответствует своя независимая переменная `let`. Если внутри цикла есть вложенные объявления функций, то в замыкании каждой будет та переменная, которая была при соответствующей итерации. Исходя из этого `i` создается с каждым циклом в отельном скоупе и с каждым разом равна новому значению инкремента что собственно и будет выведено в лог.
  4. @zmts zmts revised this gist Apr 16, 2018. 1 changed file with 0 additions and 3 deletions.
    3 changes: 0 additions & 3 deletions JS.md
    Original file line number Diff line number Diff line change
    @@ -23,7 +23,6 @@ for(var i = 0; i < 5; i++) {

    ## let

    ```
    ```
    for(var i = 0; i < 5; i++) {
    setTimeout(function() {
    @@ -36,6 +35,4 @@ for(var i = 0; i < 5; i++) {
    // >> 2
    // >> 3
    // >> 4
    ```
    ```
  5. @zmts zmts revised this gist Apr 16, 2018. 1 changed file with 22 additions and 1 deletion.
    23 changes: 22 additions & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,7 @@
    # Javascipt. Closure. Event loop

    ## var

    ```
    for(var i = 0; i < 5; i++) {
    setTimeout(function() {
    @@ -17,4 +19,23 @@ for(var i = 0; i < 5; i++) {
    - Цикл отработал
    - 5 таймаутов создано
    - Переменная `i` равна `5`
    - Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`
    - Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`

    ## let

    ```
    ```
    for(var i = 0; i < 5; i++) {
    setTimeout(function() {
    console.log(i);
    }, 1000);
    }

    // >> 0
    // >> 1
    // >> 2
    // >> 3
    // >> 4
    ```
    ```
  6. @zmts zmts revised this gist Apr 15, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -13,7 +13,7 @@ for(var i = 0; i < 5; i++) {
    // >> 5
    // >> 5
    ```
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которой находится цикл. При прохожнении каждой итерации создаются таймауты и инкрементится переменная `i`. В момент завершения цикла переменная `i` будет равна `5`.
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которой находится цикл. При прохожнении каждой итерации создаются таймауты и инкрементится переменная `i`. В момент завершения цикла переменная `i` будет равна `5` и все логи одновременно через одну секунду выведут `5`.
    - Цикл отработал
    - 5 таймаутов создано
    - Переменная `i` равна `5`
  7. @zmts zmts revised this gist Apr 15, 2018. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -13,4 +13,8 @@ for(var i = 0; i < 5; i++) {
    // >> 5
    // >> 5
    ```
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которой находится цикл. При прохожнении каждой итерации создаются таймауты и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цикл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`.
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которой находится цикл. При прохожнении каждой итерации создаются таймауты и инкрементится переменная `i`. В момент завершения цикла переменная `i` будет равна `5`.
    - Цикл отработал
    - 5 таймаутов создано
    - Переменная `i` равна `5`
    - Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`
  8. @zmts zmts revised this gist Mar 24, 2018. 1 changed file with 6 additions and 0 deletions.
    6 changes: 6 additions & 0 deletions JS.md
    Original file line number Diff line number Diff line change
    @@ -6,5 +6,11 @@ for(var i = 0; i < 5; i++) {
    console.log(i);
    }, 1000);
    }
    // >> 5
    // >> 5
    // >> 5
    // >> 5
    // >> 5
    ```
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которой находится цикл. При прохожнении каждой итерации создаются таймауты и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цикл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`.
  9. @zmts zmts revised this gist Mar 24, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -7,4 +7,4 @@ for(var i = 0; i < 5; i++) {
    }, 1000);
    }
    ```
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которй находится цикл. При прохожнении каждого круга создаются таймауты и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цикл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`.
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которой находится цикл. При прохожнении каждой итерации создаются таймауты и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цикл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`.
  10. @zmts zmts revised this gist Mar 24, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -7,4 +7,4 @@ for(var i = 0; i < 5; i++) {
    }, 1000);
    }
    ```
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которй находится цикл. При прохожнении каждого круга создаются таймауты и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цикл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которй находится цикл. При прохожнении каждого круга создаются таймауты и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цикл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых анонимная ф-ция через замыкание выводит переменную `i` которая в этот момент уже равна `5`.
  11. @zmts zmts revised this gist Mar 24, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -7,4 +7,4 @@ for(var i = 0; i < 5; i++) {
    }, 1000);
    }
    ```
    При прохожнении каждого круга создается таймаут и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цыкл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.
    Создавая переменную `i` в цикле (через `var`) мы обьявляем ее в области видимости той ф-ции в которй находится цикл. При прохожнении каждого круга создаются таймауты и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цикл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.
  12. @zmts zmts revised this gist Mar 24, 2018. 1 changed file with 1 addition and 3 deletions.
    4 changes: 1 addition & 3 deletions JS.md
    Original file line number Diff line number Diff line change
    @@ -7,6 +7,4 @@ for(var i = 0; i < 5; i++) {
    }, 1000);
    }
    ```
    При прохожнении каждого круга создается таймаут и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цыкл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.

    При каждой итерации цикла переменная `i` через замыкание изменяется анонимной ф-цией находящейся в таймауте.
    При прохожнении каждого круга создается таймаут и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цыкл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.
  13. @zmts zmts revised this gist Mar 24, 2018. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion JS.md
    Original file line number Diff line number Diff line change
    @@ -7,4 +7,6 @@ for(var i = 0; i < 5; i++) {
    }, 1000);
    }
    ```
    При прохожнении каждого круга создается таймаут и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цыкл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.
    При прохожнении каждого круга создается таймаут и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цыкл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.

    При каждой итерации цикла переменная `i` через замыкание изменяется анонимной ф-цией находящейся в таймауте.
  14. @zmts zmts created this gist Mar 24, 2018.
    10 changes: 10 additions & 0 deletions JS.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,10 @@
    # Javascipt. Closure. Event loop

    ```
    for(var i = 0; i < 5; i++) {
    setTimeout(function() {
    console.log(i);
    }, 1000);
    }
    ```
    При прохожнении каждого круга создается таймаут и инкрементируется переменная `i`. В момент завершения цикла переменная `i` будет равна `5`. Цыкл отработал, 5 таймаутов создано, переменная `i` равна `5`. Спустя секунду выполняются наши таймауты(пять штук) в которых выводится переменная `i` со значением `5`.