Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   каменное объявление функции (https://javascript.ru/forum/misc/18145-kamennoe-obyavlenie-funkcii.html)

monolithed 19.06.2011 14:53

!function() {
    return  {
        a : function() {
            alert(true);
        },
        b : function() {
            alert(false);
        }
    }[1 > 2 ? 'a' : 'b']();
}();

SlavaPav 19.06.2011 14:59

Суть "ленивой" функции не в замыкании, и не в реализации, а в уменьшении работы совершаемой JS. Эффективнее всего применять не для простых логических условий, а для массивного процесса инициализации. Чаще это перетекает в использование модуля.

melky 19.06.2011 16:26

меня удивило замещение переменной другим значением. у функции больше нет указателя, её должен был собрать сборщик мусора.

хотя, это и есть замыкание,как его описывают.

просто таких примеров я никогда не видел. особенно, функция,которая сама себя переопределяет.

и вообще, эта тема освещена не так хорошо,как чёртово использование jQuery, например. или работа с AJAX

monolithed 19.06.2011 16:52

Цитата:

Сообщение от melky
меня удивило замещение переменной другим значением.

это вас тоже удивляет? :)
function factorial(n) {
    return n == 0 ? 1 : n * factorial (n-1);
}
alert(factorial(5));



Цитата:

Сообщение от melky
у функции больше нет указателя

в JS нет указателей и никогда не будет))

melky 19.06.2011 16:58

не цепляйтесь к словам ) "на функцию больше ничего не указывает"
рекурсия не удивляет, а вот функция, которая меняет саму себя на ходу, это да.


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