История изменений
Исправление alysnix, (текущая версия) :
В JS «замыкаются» не конкретные значения переменных, а весь scope вместе со всеми переменными,…
что вы лоб, что по лбу. видимый внешний скоп в данном случае будет просто адресом фрейма на стеке локальных переменных внешней функции, который передадут этой лямбде скрытым параметром. так в modula-2 сделано еще в начале 80х.
а компилятор сгенерит код доступа к переменным из внешнего скопа с смещением относительно этого адреса.
в данном случае - это общий захват, но в плюсах делается не так. там то, что надо захватить обьявляется явно.
оба способа хороши по своему. общий захват - проще, частный - более защищенный явной декларацией.
Исправление alysnix, :
В JS «замыкаются» не конкретные значения переменных, а весь scope вместе со всеми переменными,…
что вы лоб, что по лбу. видимый внешний скоп в данном случае будет просто адресом фрейма на стеке локальных переменных внешней функции, который передадут этой лямбде скрытым параметром. так в modula-2 сделано еще в начале 80х.
а компилятор сгенерит код доступа к этим переменным с смещением относительно этого адреса.
в данном случае - это общий захват, но в плюсах делается не так. там то, что надо захватить обьявляется явно.
оба способа хороши по своему. общий захват - проще, частный - более защищенный явной декларацией.
Исходная версия alysnix, :
В JS «замыкаются» не конкретные значения переменных, а весь scope вместе со всеми переменными,…
что вы лоб, что по лбу. видимый внешний скоп в данном случае будет просто адресом фрейма на стеке локальных переменных внешней функции, который передадут этой лямбде скрытым параметром. так в modula-2 сделано еще в начале 80х.
а компилятор сгенерит код доступа к этим переменным с смещением относительно этого адреса.
в данном случае - это общий захват, но в плюсах делается не так. там то, что надо захватить обьявляется явно.