• Замыкания в чем конкретно разница?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Не работает, потому что к тому времени, когда функция onclick будет вызвана, переменная i дойдет до самого конца цикла. И будет использоваться именно это, последнее значение.

    В первом варианте переменная i используется в конкретной итерации, т.е. берется photos[i] и это значение дальше передаётся, а сама переменная i больше не используется, так что в целом пофиг, как там она дальше будет изменяться.

    Ведь в первом варианте вызов addThumbnailClickHandler(thumbnails[i], photos[i]) происходит прямо в цикле, сразу, без промедлений, а не откладывается на потом. В этот момент конкретные значения передаются в качестве параметров. И далее из-за замыкания они так и остаются висеть в памяти и ссылаться на то, что нужно.

    Немного изменим код, и он снова перестанет работать :)
    var i;
    
    var addThumbnailClickHandler = function (thumbnail) {
      thumbnail.addEventListener('click', function () {
        fullPhoto.src = photos[i]; // i === thumbnails.length
      });
    };
    
    for (i = 0; i < thumbnails.length; i++) {
      addThumbnailClickHandler(thumbnails[i]);
    }
    Ответ написан
    Комментировать
  • Где найти наставника или программиста, который даст простые заказы за небольшие деньги?

    @byBasket
    тоже как начинающий и тоже как пытающийся найти заказы на фрилансе, отвечу))

    -- учи уже сейчас Wordpress параллельно со всем остальным. (кто тебе пишет про потолок, выгорание. конкуренцию - это всё не теперь и не про тебя!!! ты к этому придёшь через несколько лет или этапов, что быстрее наступит, и за это время никто не мешает тебе изучить и ООП и Lavarel Или Yii)
    -мой пример - изучив немного WP уже брал заказы на площадках, и 5-15т.р. в месяц можно делать легко! не знаю, можно ли в ссылки но вот ваш же фрилансерский сайт, я на нём и работаю - https://freelancehunt.com - не реклама, просто там реально стартовать можно, т.к он без предоплат.
    сделай себе первый хороший отзыв фейковый (не ну а чо)))
    много есть ещё что сказать, если что, обращайся))
    а, да, вступи в группы профильные в телеге и мелькай там с умными вопросами или ответами.
    Ответ написан
    Комментировать
  • Нужно ли верстальщику знание canvas? Если да, насколько глубоко?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    А что там знать?

    Если вы хорошо знаете сам язык JavaScript, то любую задачу на canvas можно быстро решить, используя документацию или гугл. То есть можете не знать canvas (разве что вам понадобится на собеседовании). Как только появляется задача - начинаете её делать, параллельно открывая документацию. Там всё просто: линии, фигуры, шрифты, а также цвета и стили всего этого добра. И надо будет без какой-либо разметки считать координаты по придуманному вами алгоритму.
    Ответ написан
    Комментировать
  • Нужно ли верстальщику знание canvas? Если да, насколько глубоко?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Большинство верстальщиков не умеют работать с канвасом, клепают себе однотипные сайтики на бутстрапе и довольны жизнью. На этом вопрос можно закрыть. Но иногда возникают задачи вроде трехмерных презентаций товаров или каких-нибудь простых конструкторов - тут уже минимальный опыт с three.js или аналогами будет полезен. Помнить все не нужно, но общее представление должно быть.

    Есть еще нестандартные рекламные сайты с самыми разными сложными анимациями, в том числе и с шейдерами. Тут не только канвас, тут в целом нужно уметь в довольно специфическую верстку. Кто-то за всю свою карьеру с ними не сталкивается ни разу, а кто-то специализируется на этом и получает хорошие деньги. Но это отдельная тема.

    SVG на уровне "встроить в страницу", "повесить обработчик на клик мышкой" и "анимировать отдельные значения" пригождается регулярно. Ну и иногда на тех же нестандартных сайтах полезно бывает с масками поиграть. Что-то сложное на SVG делают редко из-за проблем с производительностью.

    З.Ы.: Не стоит себя ограничивать в знаниях. Для профессионала лучше, когда знание есть и не нужно, чем когда нужно, а его и не было никогда.
    Ответ написан
    1 комментарий
  • Какой смысл использовать bemjson?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Это удобно, если вы делаете не статичную вёрстку, а полный цикл разработки. Такой подход называется «трёхзвенная архитектура» (определение, статья). Bemjson никто не пишет, он генерируется «автоматически» с помощью функций-шаблонов:
    1) json с данными (с сервера, например);
    2) json + BEMTREE = BEMJSON;
    3) BEMJSON + BEMHTML = HTML.

    Популярный project-stub — это не production-ready решение, это демонстрация концепции, там bemjson написан вручную просто для упрощения понимания.

    Ваше же решение сильно ограничено, т. к. является не декларативным шаблоном, а чисто императивным, как и JSX. Используя XJST-шаблонизатор, вы можете разделить логику и представление, но наглядно это продемонстрировать в рамках ответа на вопрос довольно трудно — на меленьких синтетических примерах преимущества увидеть сложно, а на то, чтобы «въехать» в более-менее крупный проект понадобится время (и мое, как объясняющего, и ваше), но ограничусь лишь таким аргументом — описание сущностей в виде блоков (компонентов) позволяет обращаться к ним не как к emmet-строке (формат pug-шаблонов),а как к логической сущности. Например, я могу описать сущность ссылки (блок link) и дополнить её методом «хождения» в роутинг, после чего мои ссылки смогут автоматически генерировать свой href по набору параметров:

    {
      block: 'link',
      to: 'article',
      params: {
        author: 'Realetive',
        tags: ['bem']
      }
    }


    К тому же BEMJSON — это JavaScript и там будут работать все возможности языка:

    {
      block: 'slider'
      items: [ 'flower', 'heaven', 'forest', ].map( item => ({
        elem: 'item',
        imagePath:  'assets/img/slider/' + item + '.jpg'
      }) )
    }


    И ещё (по себе знаю) — использование полного стека приводит к БЭМу головного мозга. Процесс необратимый, но негативного влияния пока не заметил, кроме разве что «эффекта кёрнинга» — большую часть кода вы автоматически будете раскладывать на подобие блоков, элементов и модификаторов.
    Ответ написан
    2 комментария
  • Как удалить установленный глобально Gulp?

    Kozack
    @Kozack
    Thinking about a11y
    npm uninstall -g gulp
    Ответ написан
    Комментировать