Ответы пользователя по тегу JavaScript
  • В чём отличие functional reactive и imperative ractive подходов?

    Tyranron
    @Tyranron
    В первом примере (императивном), у Вас объект класса Calculator после создания хранит в себе состояние: this.VAT = 22. И все последующие методы этого класса работают с этим состоянием (контекстом класса).

    Во втором же примере (функциональном) - напротив, никакого состояния у класса нет. Он, по сути, являет собой отдельный неймспейс для чистых функций. Функции в своей работе абсолютно не затрагивают состояние объекта.

    Вообще, ИМХО, пример просто плохой. Добавьте в оба примера логику мутации (изменения) VAT, и Вам сразу же станет понятно в чём различие. Ибо в первом примере Вы будете напрямую изменять this.VAT, и использовать его потом. А во втором примере, Вам придётся прокидывать значение VAT параметром, нигде его не храня.

    А отличие functional reactive и imperative reactive подходов в том, что:

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

    2. В императивном же подходе у Вас данные размазаны по отдельным живущим сущностям, у которых есть своё внутреннее состояние, и которые общаются между собой. Реактивность тут только в том, что у этих сущностей свойства реактивные, то есть при изменении свойства, все зависящие от него сущности перевычисляют зависящие свойства/значения.

    Разница, как таковая, не в реактивности, а всего лишь в способе декомпозиции задачи. Реактивность что там, что сям, по сути одна и та же (в примере: Rx.Observable.from(items)).
    Ответ написан
    Комментировать
  • Как решить проблему с jquery UI datepicker?

    Tyranron
    @Tyranron
    Ответ написан
    Комментировать
  • Как написать условие?

    Tyranron
    @Tyranron
    Вероятно, тут более разумно, проще и производительнее будет пойти от обратного.
    var num = 5,
        all = true,
        arr = [1, 5, 7, 9];
    
    for(var i = 0; i < a.length; i++) {
        if(arr[i] != num) {
            all = false;
            break;
        }
    }
    Ответ написан
    7 комментариев
  • Почему меняется порядок аргугментов при выполнении цикла в JS?

    Tyranron
    @Tyranron
    Потому что метод .show() вызывается при создании массива actions, и результат вызова .show() становится последним элементом этого массива.
    В цикле же, Вы просто выводите значения массива, которые были сформированы при создании этого массива в результате обращений к свойствам и вызовов методов этого объекта.
    Ответ написан
    1 комментарий