• В чем разница императивного и декларативного подхода в javascript? Это процедурный и ООП стили?

    @pikkvile
    developer
    Моё понимание такое.
    Декларативное программирование - это когда в коде описано что должно получиться, а императивное - когда написано как это сделать. Т.е. в первом случае мы совершенно не интересуемся, каким именно образом машина сделает работу, какие инструкции в каком порядке выполнятся и так далее, мы просто объясняем ей, что хотим увидеть в результате. Примеры декларативных языков - html, css, sql, конфиг nginx. Ещё тут стоит упомянуть функциональные языки (lisp, haskell), программы на них тоже, как правило, являются описанием (декларацией) того "что должно получиться". Ну, короче говоря, мы говорим компьютеру: вот смотри, мне надо чтобы было так, а как ты это сделаешь, мне не интересно. Аналогия такая: у меня есть чертёж бани, я даю его бригаде строителей и уезжаю. Как именно они там будут таскать брёвна, пилить доски и прочее - я не в курсе.
    Программируя императивно, мы описываем конкретные шаги, действия и точный порядок, в котором их нужно исполнять. Напрямую руководим процессом, непосредственно отдаём приказания. Примеров масса, большинство популярных языков императивны, в том числе и javascript. Ты пишешь: вот, сделай-ка переменную myVar, потом запиши туда число 5, повторяй это до тех пор, пока что-то не случится... и так далее. Возвращаясь к примеру с баней, ты теперь - начальник бригады, именно говоришь какое бревно куда класть.
    Что касается процедурного и объектно ориентированного стилей, это немного о другом. Я бы сказал, что это два разных способа писать императивные программы. В процедурном случае мы организуем код, наши команды (приказы машине) в виде процедур. Процедура - набор команд. Это довольно простой способ организации кода и исторически более ранний. ООП - это чуть более сложный подход к организации кода, когда мы группируем инструкции и данные, которыми они манипулируют, вместе. Объект - это состояние (данные) плюс поведение (набор методов). Но это уже немного другая история.
    Ответ написан
    2 комментария
  • Верстка интерактивной мозайки в HTML?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    В вашем случае разумнее обойтись вообще без второй картинки.
    При hover картинка делается полупрозрачной, цвет обертки - синий нужного оттенка.

    https://jsfiddle.net/zexdvc6a/
    Синий поставила самый простецкий, для примера. Подберите свой и прозрачность.
    Ответ написан
    4 комментария
  • Рекурсия в Javascript?

    Потому что sumTo(1) без else вернет undefined
    А undefined + 14 = NaN
    Ответ написан
    Комментировать
  • Рекурсия в Javascript?

    BuriK666
    @BuriK666
    Компьютерный псих
    Получаете Nan т.к. 2 + undefined это NaN
    else можно убрать, но оставить return 1;

    function sumTo(n) {
          if(n > 1) {
            return (n + sumTo(n-1));
          }
          return 1;
        }
    Ответ написан
    Комментировать