Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замыкание или ... ? (https://javascript.ru/forum/misc/43680-zamykanie-ili.html)

kuzroman 16.12.2013 17:17

Замыкание или ... ?
 
Господа, может кто просветить почему movedAnimate не меняет test.movedAnimate по ссылке?

и даже если сделаем movedAnimate = test.movedAnimate, тоже самое происходит.

Можно конечно непосредственно в в колбеке self.movedAnimate менять, но, что все же происходит в первом варианте?

<div id="test"></div>
$('body').on('click', function () {
        test.changeMovedAnimate();
    });

test = {
    movedAnimate: false
};
test.changeMovedAnimate = function () {

    $('#test').show();
    console.log('one', this.movedAnimate);
    this.movedAnimate = true;

    var self = this
        ,movedAnimate = self.movedAnimate
    ;

    $('#test').fadeOut(500, function() {
        movedAnimate = false;
        console.log('two', movedAnimate);
    });
};

danik.js 16.12.2013 19:43

Цитата:

Сообщение от kuzroman
что все же происходит в первом варианте?

Примитивы не передаются по ссылке. Поэтому в movedAnimate у тебя копия значения self.movedAnimate. И даже если бы была и ссылка, то через movedAnimate = false ты бы затер эту ссылку значением false

И потерял ключевое слово var перед объявлением test.

kuzroman 18.12.2013 14:08

Ну да все логично. Сенкс.


Часовой пояс GMT +3, время: 14:19.