Ответы пользователя по тегу JavaScript
  • Событие keyup в jquery вызывается дважды, почему так происходит?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    document.querySelector('*').addEventListener('keyup', function (event) {
    - взять один (первый) элемент, соответствующий селектору и навесить на него обработчик события keyup. Этим элементом будет <html>.
    $('*').keyup(function (event) { - на все элементы, соответствующие селектору, навесить обработчик события keyup.
    А дальше работает всплытие событий. Когда вы нажимаете на клавишу, то событие поочерёдно срабатывает на элементе, на котором стоит фокус, и на всех его родителях.
    Ответ написан
    Комментировать
  • Откуда при рекурсии в консоли берутся B:1 и B:2?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А дальше происходит возврат из функции и продолжает выполняться предыдущий экземпляр функции.
    А дальше происходит возврат из функции и продолжает выполняться предыдущий экземпляр функции.
    И так пока стек вызовов не опустошится.
    Ответ написан
    Комментировать
  • Как правильно переводить единицы измерения на лету?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Переводить из введённого значения в единицы СИ, затем из СИ во все остальные значения. Соответственно, в первой части надо умножать на коэффициент, во второй делить на коэффициенты.
    1 тонна = 1 * 1000 = 1000 кг
    1000 кг = 1000 / 0.001 = 1000000 г
    1000 кг = 1000 / 1000000 = 0.001 килотонны
    Ответ написан
  • Как заставить функцию дождаться выполнения промиса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    async function light_q() {
      const res = await new Promise((resolve, reject) => {
        resolve(3);
      });
      console.log(res);
      return res;
    }
    
    const result = await light_q();
    Ответ написан
    4 комментария
  • Как работают параметры по умолчанию?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В JS нет именованных аргументов. Ваш вызов передаёт первым параметром 5, вторым - результат выражения (c = 5), то есть 5. Третий аргумент не указан и используется по умолчанию.
    Имитировать именованные аргументы можно используя передачу объекта:
    function sum({ a, b = 2, c = 3 }) {
      return a + b + c;
    }
    sum({ a: 5, c: 5 }); // 12
    Ответ написан
    1 комментарий
  • Как сортировать объект в алфавитном порядке в js?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    К объектам неприменимо понятие сортировки. Порядок итерирования записей в объекте определяется стандартом: сначала числовые ключи по возрастанию, затем ключи, приводимые с строкам, по возрастанию, затем остальные ключи в порядке создания.
    Ответ написан
    Комментировать
  • Как кликнуть по любому элементу и добавить класс?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Читайте про всплытие событий, разницу между event.target и event.currentTarget и метод preventDefault.
    Ответ написан
    Комментировать
  • Как пошагово работает сортировка .sort()?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Открывайте исходники движка и изучайте, как разработчик реализовал сортировку. Даже в пределах одного движка могут быть реализованы несколько разных алгоритмов, в зависимости от размера массива и типа элементов.
    Ответ написан
    Комментировать
  • Как реализовать генерацию пар чисел без повторений?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Создаём массив [(10, 10) ... (30, 30)], тасуем его (shuffle), берём из него пары чисел подряд.
    Ответ написан
    2 комментария
  • Как авторизовация в webSocket через Bearer token?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Штатный метод WebSocket в JS не позволяет добавлять заголовки (кроме Sec-WebSocket-Protocol).
    Аутентификация возможна только после установления соединения, обычными сообщениями WS.
    Ответ написан
    2 комментария
  • Где нужно обработать ошибку чтобы приложение не падало?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Что мне нужно сделать, чтобы приложение не падало при исключении?
    Обрабатывать все исключения. Вы выбрасываете новое исключение throw Error('Invalid JSON');, но нигде его не перехватываете.
    Ответ написан
    Комментировать
  • Как правильно/красивее написать код js?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Как правило, установка класса не самоцель. Нажатие на кнопку избранного, подписки и т.п. выполняет запрос к серверу для выполнения соответствующего действия и класс ставится по результату этого действия. Поскольку запросы к серверу будут разными для разных действий, то и обработчики нажатий должны различаться.
    Ответ написан
  • Как работает finally и then в Promise?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никто ничего ждать не будет. Исполнение кода пойдёт дальше до самого конца функции.
    Когда промис, который вернул fetch, перейдёт в состояние resolved, в очередь микротасков будет добавлен вызов каллбэк-функции из первого then. Если промис вернёт rejected, то вызова не будет, вернётся новый промис в rejected.
    Когда промис из первого then перейдёт в состояние resolved, в очередь микротасков будет добавлен вызов каллбэк-функции из второго then. Если промис вернёт rejected, то вызова не будет, вернётся новый промис в rejected.
    Когда промис из второго then перейдёт в состояние resolved или rejected, в очередь микротасков будет добавлен вызов каллбэк-функции из finally.
    Ответ написан
    Комментировать
  • Как применить рекурсию для получения данных из DOM?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы вызываете функцию, передавая ей Element, а она ожидает NodeList.
    tableValues(element);
    Но тут рекурсия вообще не нужна.
    const result = [...document.querySelectorAll('form input, form select')]
      .map((el) => el.value);
    Ответ написан
    1 комментарий
  • О чём пишется в коде?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Через обфускаторы JS, почему-то, не получается...
    Логично, поскольку код не обфусцирован. А большое количество "случайных цифр и букв разного регистра" это всего-лишь картинка в base64 (data:image/webp;base64).
    Ответ написан
  • Как вызвать функцию с "именованными аргументами" в JS?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    function foo({ a, b, c, d }) {
      console.log(a, b, c, d);
    }
    foo({ a: 5, d: 3 });
    // 5 undefined undefined 3
    Ответ написан
    2 комментария
  • Понимание аспектов JavaScript?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Строковый примитив преобразуется в объект только при выполнении методов объекта, причём при преобразовании используется копия значения примитива, сама переменная не меняется.
    x = 'foo'
    x // "foo"
    x.length // 3
    x === 'foo' // true
    
    x = new String('foo')
    x // String { "foo" }
    x.length // 3
    x === 'foo' // false

    При этом методы, как правило, возвращают не объекты, а примитивы.
    x = new String('foo')
    x === 'foo' // false
    x.substring(0, 3) // 'foo'
    x.substring(0, 3) === 'foo' // true
    Ответ написан
    Комментировать
  • Замыкания не существует?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Функция one() определяет переменную oneVar. Затем в ней определяется функция two(), в лексическое окружение которой попадает oneVar. В конце своей работы функция one() возвращает в качестве результата функцию two().
    В переменную three записывается результат работы one(), то есть функция two(). Несмотря на то, что one() уже закончила работу, переменная oneVar сохраняется в лексическом окружении функции two().
    При вызове three() фактически вызывается two(), в которой переменная oneVar доступна для использования.
    Ответ написан
  • Как правильно изменить тип из строки в число?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    parseFloat('-0,43%'.replace(',', '.'));
    // -0.43
    Ответ написан
    2 комментария
  • Как "заставить" метод выполняться асинхронно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Перейти от промисов к async/await.
    Ответ написан
    1 комментарий