Задать вопрос
  • Как присвоить функцию с аргументами, не вызывая её, лучше?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Ничего не лучше - показанные куски кода делают разное. Откройте консоль, выполните

    (function() {
      function func(arg) {
        console.log(arg, this);
      }
    
      let arg = 1;
    
      const f1 = () => func(arg);
      const f2 = func.bind(this, arg);
    
      arg = 2;
    
      f1();
      f2();
    }).call('hello, world!!');

    , подумайте над полученными результатами.

    Сами решайте, чего вам надо.
    Ответ написан
    Комментировать
  • Характеристика микроконтроллера. Что означает 32-разрядный? А если сказать 32-битный, это одно и тоже?

    15432
    @15432
    Системный программист ^_^
    Что означает 32 — разрядный
    Что микроконтроллер в своих машинных кодах может оперировать с 32-битными значениями. Размер регистров у него 32 бит.

    А если сказать 32 битный, это не одно ли и тоже?
    Да, одно и то же. 32 бита данных в один регистр помещается. 32 разряда в регистре.

    Память: 520 КБ памяти SRAM
    Внутри микроконтроллера встроена оперативная память типа SRAM объёмом 520 КБ

    Wi-Fi: 802.11 b / g / N, Bluetooth: v4.2 BR/EDR and BLE
    В чипе есть встроенный аппаратный модуль WiFi / BT, не нужно ничего дополнительного подключать для обеспечения беспроводной связи

    12-разрядный АЦП до 18 каналов
    Контроллер умеет измерять напряжение на своих 18 выводах с точностью до 12 бит, тем самым преобразуя аналоговый сигнал в цифровой

    2 × 8 бит ЦАПа
    Контроллер умеет формировать напряжение на двух своих выводах с точностью до 8 бит, тем самым создавая аналоговый сигнал
    Ответ написан
    25 комментариев
  • Что такое литерал объекта?

    Seasle
    @Seasle Куратор тега JavaScript
    Это вот это.
    {} // литерал объекта
    [] // литерал массива
    '' // литерал строки
    "" // тоже литерал строки
    `` // ещё один литерал строки
    /./ // литерал регулярного выражения (конкретно для примера - любого символа)
    Ответ написан
    Комментировать
  • Указатель на функцию или атрибут weak?

    @res2001
    Developer, ex-admin
    Указатель на функцию:
    плюсы: явный механизм (требует явных действий пользователя - вызова функции регистрации нового callback), понятней и проще (реализован стандартными средствами языка), универсальней (будет работать на всех платформах и компиляторах), для подключения пользовательского функционала не требуется пересборка библиотеки.
    минусы: динамическое связывание - если функция будет активно вызываться, то это может привести к дополнительным накладным расходам.

    weak:
    плюсы: статическое связывание (отсутствие накладных расходов на вызов)
    минусы: требуется не стандартная поддержка компилятора (может не работать при использовании другого компилятора, например у компилятора микрософт другой синтаксис для этого), связывание происходит не явно (компилятор сам выбирает какую функцию использовать из подходящих вариантов), для подключения пользовательского функционала требуется пересборка библиотеки

    Условная компиляция:
    плюсы: статическое связывание (отсутствие накладных расходов на вызов), универсальность, явный механизм
    минусы: возможно немного сложней в реализации, чем weak, для подключения пользовательского функционала требуется пересборка библиотеки

    Выводы:
    Если требуется статическое связывание, то выбор - условная компиляция. При грамотной реализации тут можно минимизировать действия пользователя по подключению своей реализации функции в сборку библиотеки. Если библиотеку не планируется выпускать в открытый доступ и не смущает не стандартность - можно использовать weak из-за простоты реализации.
    В остальных случаях - указатель на функцию.
    Ответ написан
    Комментировать
  • Как указать что аргумент функции - это значение из массива?

    Kozack
    @Kozack
    Thinking about a11y
    const arr = ['name', 'age', 'surname'] as const;
    type arrKeys = typeof arr[number]
    
    const obj: {[k in arrKeys]?: any} = {}
    const prepareFn = (key: arrKeys) => { obj[key] };
    
    
    
    prepareFn('name')
    // @ts-expect-error
    prepareFn('name2')
    
    obj.name
    // @ts-expect-error
    obj.name2


    https://www.typescriptlang.org/play?#code/MYewdgzg...
    Ответ написан
    1 комментарий
  • Почему не работает v-for?

    @tema1302
    Помогло? Отметь решением!))
    Наверное потому, что вы не указали в теге script ровным счетом ничего, кроме подключенного vue.js? :))
    У вас банально нет экземпляра Vue))) Предлагаю вернуться к выводу "Hello World", там вы увидите, в чем ошибка.
    Ответ написан
    Комментировать
  • Как заставить функцию ждать выполнения события click?

    Обернуть в Promise и использовать async await как написал 0xD34F но есть одно но
    Для того чтобы это работало, функцию Func делают асинхронной async function Func() { а это значит что она не возвращает результат, она возвращает Promise, который вам тоже нужно обрабатывать асинхронно.
    Прежде чем лезть в асинхронщину, нужно понять что обратно оттуда вам не выбраться.

    Хорошенько подумайте прежде чем спрашивать "как подождать результат колбека?"
    https://habr.com/ru/company/mailru/blog/269465/
    https://developer.mozilla.org/en-US/docs/Web/JavaS...
    Ответ написан
    Комментировать
  • Не могу правильно сделать условие?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Слушать лучше событие не клавиатуры, а input — так не пропустите, например, вставку ctl+v

    Почему бы не заменять запятые точками?

    Наверное, допустим вообше лишь один знак: не может же быть числа 12.34.56? Тогда регулярка валидации примерно такая \d*[\.,]?\d+
    Ответ написан
  • Как сделать вывод очереди из чисел в обратном порядке через список?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Раз в обратном порядке выводить, то это не очередь, а стек получается.

    А дальше - просто добавляйте элементы в начало списка. Потом выводите весь список.
    Ответ написан
    Комментировать
  • Как сделать вывод очереди из чисел в обратном порядке через список?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Реализовать список.
    2. Реализовать очередь на списке.
    3. Выполнить задание.
    Ответ написан
    1 комментарий
  • Что предпочтительнее insertAdjacentHTML или создавать элементы через createElement?

    y0u
    @y0u Куратор тега JavaScript
    dev
    Всё зависит от ситуации. Предпочтительнее createElement, так как в момент создания сохранится ссылка на элемент для последующей работы с ним. Если работать с этим элементом не нужно, например если с сервера пришел ответ в виде html строки и нужно всего лишь отобразить результат без дополнительных действий, то createElement здесь не нужен.
    Ответ написан
    Комментировать
  • Как указать тип возвращаемого значения?

    Lynn
    @Lynn
    nginx, js, css
    function foo<K extends keyof State>(key: K, callback: (value: State[K]) => void) {
        // ...
    }


    https://www.typescriptlang.org/play?#code/JYOwLgpg...
    Ответ написан
    Комментировать
  • Как массив превратить в связный список?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Перебираем массив от конца к началу, на каждом шаге создаём копию текущего элемента, к которой будет добавлена ссылка на объект, полученный на предыдущем шаге.

    Коротко:

    const arrToSinglyLinkedList = (arr, nextKey = 'next') =>
      arr.reduceRight((acc, n) => ({ ...n, [nextKey]: acc }), null);

    Длинно:

    function arrToSinglyLinkedList(arr, nextKey = 'next') {
      let list = null;
    
      for (let i = arr.length; i--;) {
        const node = Object.assign({}, arr[i]);
        node[nextKey] = list;
        list = node;
      }
    
      return list;
    }

    Пользоваться этим, понятное дело, так:

    const list = arrToSinglyLinkedList(arr, 'child');
    Ответ написан
    1 комментарий
  • Как перехватывать все вызовы console.log?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const oldLog = console.log;
    
    console.log = function(...args) {
      // здесь можете что-нибудь сделать с переданными значениями
    
      oldLog(...args);
    };
    Ответ написан
    Комментировать
  • Что будет за использование чужих ассетов в проекте с открытым исходным кодом?

    zenwalker
    @zenwalker
    0xABADBABE
    Как я должна указывать права на эти самые ассеты и могу ли вообще их использовать?

    Здесь всё просто. Если автор этих произведений явно разрешает вам использовать их в той форме, в которой вы их используете — у вас нет проблем, если не разрешает — не можете. Если автор произведений и условия, по которым они лицензируются не известны, либо не оговорены — это просто интеллектуальная собственность, с которой вы ничего не можете делать. Иными словами, только смотреть там, где они сейчас находятся, но не копировать, не распространять и не использовать в личных произведениях.

    Репозиторий под открытой лицензией

    Вы упомянули, что используете изображения «с другого сайта» а их лицензия как раз может быть несовместима с вашей и запрещать такого рода использование и распространение.

    Какие последствия этого и можно ли как-то через упоминание автора избежать писем добра?

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

    При нарушении, последствий для вас, скорее всего, не будет никаких. Последствия для физлица или организации, на сайте которой используются данные изображения могут быть значительные и финансовые. Например, студия Лебедева регулярно судится с компаниями за использование их произведений без лицензии. Для организации-конкурента это простой способ утопить оппонента в судебных издержках. Добавьте сюда так же и репутационные риски — может подняться буча и скандал.

    P.S.: Не юрист.
    Ответ написан
    Комментировать
  • Как преобразовать имена свойств объекта из kebab-case в camelCase?

    0xD34F
    @0xD34F
    const toCamelCase = val =>
      val instanceof Array
        ? val.map(toCamelCase)
        : val instanceof Object
          ? Object.fromEntries(Object
              .entries(val)
              .map(n => [
                n[0].replace(/_+(.)/g, (m, g1) => g1.toUpperCase()),
                toCamelCase(n[1]),
              ])
            )
          : val;
    Ответ написан
    1 комментарий
  • В чем опасность регистрации/авторизации по номеру телефона?

    DevMan
    @DevMan
    обычно делается наоборот: сначала логин/пароль, затем уже код.
    иначе можно достаточно легко вас разорять на смс в никуда.

    архитектурно – это достаточно простая задача: пока не получили всех данных – ничего не делаем кроме показа формы.

    лично я терпеть не могу коды по смс, и считаю их антипаттерном: интернет может быть, а мобильной связи может не быть (у меня такое было не раз, и достаточно часто). лучше использовать другие способы otp.
    Ответ написан
    3 комментария