Ответы пользователя по тегу JavaScript
  • Можно ли претендовать на должность junior-frotnend (trainee) с таким кодом?

    FlashManiac
    @FlashManiac
    I am from Krypton!
    Как уже выше писали - слишком запутано для такой простой задачи. Код должен быть простым и лаконичным. Помимо выше перечисленного заметил вот этот странный код:
    (function () {
    		UiCtrl.createForm();
    	}());

    Не понятно зачем надо оборачивать вызов метода?

    Рекомендации:
    • Юзайте редактор с подсказками eslint. Например Intellij Idea + eslint + airbnb style. Это вас научит писать код в одном стиле.
    • Юзайте современный front-end stack -> nodejs + es6-7 + webpack + ...
    • Изучите -> Vue + React + Angular. Напишите несколько демо-проектов.
    • Напишите резюме. Найдите как написать в современном стиле.
    • Найдите понравившуюся вакансии в крупной-средней фирме. И изучите все что требуется для данных вакансий. После - отправьте резюме во все.
    • Проходите тех-собеседования регулярно.

    Ответ написан
    2 комментария
  • Node.js включает в себя JS полностью, в смысле любые штуки, которые можно найти в документации по JS можно применять в коде Node.js?

    FlashManiac
    @FlashManiac
    I am from Krypton!
    Рассматривайте это так:
    Есть javascript - это язык инструмент - он одинаков для nodejs, браузеров и так же может применяться в других средах. Это просто язык с помощью которого вы взаимодействуете с предоставленными средой интерфейсами (API). Вместе с языком идут базовые типы (Number, String, Boolean, null, undefined, Date).

    Есть API это некий набор классов, модулей и методов, которые предоставляются конкретной средой. У nodejs это свой набор модулей, а у браузеров свой набор классов, методов и глобальных объектов. Получается, что можно написать некий код который будет работать и на nodejs и в браузерах если код не будет затрагивать API. Например если пишите игру, то можно логику игры абстрагировать от API и написать один раз - и она будет работать и на backend и на frontend. Таким образом можно будет запустить симуляцию игры игрока на backend. Или у вас есть приложение где на сервер передаются какие то структуры данных и можно написать лишь один раз классы которые работают с ними (парсинг и тд) и использовать сразу и там и там.
    Ответ написан
    1 комментарий
  • Какое имя для функции найлучшее?

    FlashManiac
    @FlashManiac
    I am from Krypton!
    Мне кажется тут надо сделать так. Обработчик события от нажатия кнопки должен называться deleteButtonHandler. То есть функция должна отражать свою суть. Когда смотришь на это название уже понятно, что есть какая то кнопка Delete и это ее обработчик.
    Ответ написан
    Комментировать
  • Какой использовать генератор случайных чисел?

    FlashManiac
    @FlashManiac
    I am from Krypton!
    Можно использовать генератор псевдослучайных чисел с начальным значением seed.
    Есть пример на Хабре
    Ответ написан
    Комментировать
  • Как выглядит алгоритм нахождения пересечения 1000 объектов?

    FlashManiac
    @FlashManiac
    I am from Krypton!
    Была такая же проблема в игре было много кораблей и снарядов. И надо было найти все пересечения снарядов со всеми кораблями. Алгоритм с простым перебором был жутко медленный. Поэтому мы сделали так:
    Разбили пространство на виртуальные квадраты с размером size
    Для этого мы создаем map и для каждой окружности мы ищем ее key.
    key = Math.floor(circle.x / size) + "_" + Math.floor(circle.y / size)
    if(!map[key]) map[key] = [];
    map[key].push(circle);

    Далее мы просто проходимся по ключам map и проверяем пересечения окружностей внутри квадрата. Получается, что проверок становится намного меньше благодаря группировки кругов в квадраты.

    Так же можно оптимизировать проверку пересечений кругов. Для круга мы должны знать его радиус.
    function isCollided(circle0, circle1)
    {
          var maxDistanceSquared = circle0.radius + circle1.radius;
          maxDistanceSquared *= maxDistanceSquared;
          
          var dx = circle0.x - circle1.x;
          var dy = circle0.y - circle1.y;
          
          var currentDistanceSquared = dx * dx + dy * dy;
          
          return currentDistanceSquared < maxDistanceSquared;
    }
    Ответ написан
  • Отображение работы js скрипта по мере его выполнения?

    FlashManiac
    @FlashManiac
    I am from Krypton!
    Могу порекомендовать:
    • Использовать Promise если доступно ES6
    • Разбить всю задачу на короткие таски и в начале создать список тасков и дальше их выполнять один за другим c помощью setTimeout(task, 0);
    • Использовать async / avait если доступно
    Ответ написан
  • Как правильно из значений query string сформировать объект (native javascript)?

    FlashManiac
    @FlashManiac
    I am from Krypton!
    Можно попробовать использовать JSON для любой структуры данных.
    Правда есть ограничение - максимальная длинна URL
    Кодировать так:
    const baseURL = "https://www.website.ru/catalog/kurtki/?";
    const data = {
      size: [41332, 43296, 44278],
      brand: [13974],
      consists: [14, 2]
    };
    const resultURL = baseURL + "?" + encodeURIComponent(JSON.stringify(data));


    Декодировать аналогично:
    const params = resultURL.split("?")[1];
    const data = JSON.parse(decodeURIComponent(params));
    Ответ написан
    Комментировать