Задать вопрос
  • Что за конструкция (, ) используется в операторе if javascript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Запятая разделяет выражения. Они вычисляются и возвращается результат последнего.

    (2 + 3, 4 + 5)  // вернёт 9
    (1,5 - 2)  // вернёт 3,  ставьте правильно пробелы )
    (a = 1, условие2) // назначит новое значение переменной a и вернёт значение условия2


    Конструкция в вопросе проделает следующую работу:
    1. проверит условие1 и если оно false – дальше не пойдёт.
    2. назначит a=1 и с этим новым значением проверит условие2. Если оно false - стоп.
    3. назначит a=2 и с этим новым значением проверит условие3. Если и оно true – if сработает.
    Ответ написан
    Комментировать
  • Как правильно отсортировать свойства данные по дате и времени?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const sortedArr = arr
      .map(n => [ n, new Date(n.date.replace(/(\d+)\.(\d+)\.(\d+)/, '$3-$2-$1')) ])
      .sort((a, b) => a[1] - b[1])
      .map(n => n[0]);
    Ответ написан
    2 комментария
  • Оцените логику проекта?

    @twolegs
    В render такое делать нельзя. Место для такой подписки - componentDidMount. Думаю, правильнее будет подписаться один раз, и не делать ничего, если isMenuOpen в true.
    if (isMenuOpen) {
          document.addEventListener('keydown', this.keyPressHandler)
        } else {
          document.removeEventListener('keydown', this.keyPressHandler)
        }


    Остальное (организация компонент) - это скорее вкусовщина. Но если смотреть в целом - нет какой-то консистентности. Где-то есть компоненты для логических элементов, где-то нет.
    Ответ написан
    2 комментария
  • Задачку по JS такую как решить?

    profesor08
    @profesor08 Куратор тега JavaScript
    "Хацкаем" метод метод, пишем в глобал результат, юзаем результат.
    Math.floorOrig = Math.floor;
    Math.floor = (n) => {
      window.num = Math.floorOrig(n)
      return window.num;
    }
    
    function getNum() {
      const num = Math.floor(Math.random() * 10);
    }
    
    getNum();
    
    console.log(window.num);


    Еще можно просто переопределить саму функцию.
    function getNum() {
      const num = Math.floor(Math.random() * 10);
    }
    
    function getNum() {
      return Math.floor(Math.random() * 10);
    }
    
    console.log(getNum());
    Ответ написан
    3 комментария
  • Как сконкатенировать в строку через запятую значения определенных свойств объектов в массиве?

    @TheAthlete
    Perl 5, C, C++, компьютерные сети
    arr.map(item => item.title).join(', ');
    Ответ написан
    Комментировать
  • Fullstack: составить дорожную карту?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    я себя вижу как будующий фуллстек

    Я себя тоже когда-то видел новым Линусом Торвальдсом, но жизнь не щадит.

    поэтому можно по подробнее про бэк и фронт.

    Каким образом вы хотите стать фуллстэком, если на таком банальном шаге как - поиск информации, вы уже делаете огромный затуп.

    Алгоритм действий для вас -
    1. Выбор сферы -> хочу работать там-то.
    2. Выбор языка -> определился со сферой, есть такие вот языки, на которых реализуется функционал.
    3. Изучения языка и инструментария по выбранным выше аспектам
    - Вопросы - (нужна ли математика в данной сфере, если нужна - то какой уровень математики, какой уровень computer science, что нужно знать из базы).
    - от фронта до бэка(если бизнес модель и задача позволяет одновременно реализовывать фронт и бэк без боли и огромного количества поглощаемой информации).
    4. Учитьсяи работать от 2-3 лет(если есть желание быть фуллстэком) и до бесконечности, желательно сразу идти в офис что бы перенимать опыт у более опытных товарищей).

    я себя вижу как будующий фуллстек

    Я когда вижу Резюме - фуллстэк - 2 года опыта, немного начинает подташнивать. Нормальный фронт, или нормальный бэк - это 2-3 года работы, когда задача решается так как нужно, и +\- не приходится переделывать. Нормальным фуллстэком вы станете лет через 5, поэтому начните с алгоритма, и далее если хватит сил - уже прыгайте на второй корабль.
    Ответ написан
    2 комментария
  • Как программно вставить файлы в input?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Лайфхак для создания коллекции файлов FileList:
    var info = 'Какой-нибудь текст';
    
    var dt  = new DataTransfer();
    dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

    В переменную info вместо текста, можно положить в том числе и Blob - это особенность функции new File() которая первым параметром может принять как массив из текстов, так и массив из Blob.

    Фактически лайфхак выше позволяет нам JavaScript-ом скачать любой какой угодно файл со своего сайта и вставить его абсолютно в любое поле <input type="file"> - что просто архиполезно для браузерных ботов.

    Также способ выше можно применить для редактирования уже выбранных пользователем файлов. Например, если надо из поля выбора файлов убрать какие-то определенные файлы и при этом сделать не фиктивно, а реально.

    Огромное спасибо пользователю Mmx Symfony, который нарыл это решение где-то в недрах иностранных сайтов. Сам я, в свое время сколько не искал, везде был ответ, что это невозможно, а оказалось, что нихрена подобного =)
    Ответ написан
    3 комментария
  • Как сделать выплывание одного и того же окна в разные стороны, в зависимости от расположения родителя на JS?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    element.addEventListener("mouseover", function( ) {   
    if(element.clientX < element.clientWidth/2){
    выход справа
    }else{
      выход слева
    }
    }, false);
    Ответ написан
    1 комментарий
  • Почему кнопка переключает чекбокс?

    @dGololobov
    начинающий
    Потому что у вас class checkbox у вас display: block; растягивается на всю ширину.
    Вам кнопку надо поднять как-то над блоком. Поработать с z-index кнопки и чекбокса надо.
    Ответ написан
    Комментировать
  • Какой заголовок ставить коммиту, когда почистил код от пробелов и заккоментированного?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Косметические правки
    Ответ написан
    Комментировать
  • Очистка localStorage при помощи setTimeout()?

    @kayart
    Не совсем понятно, как setTimeout подойдет в решении этой проблемы. Вы же не ожидаете, что пользователь не покинет вкладку за этот месяц?

    На мой взгляд, целесообразнее сохранить в localStorage дату создания корзины. Затем при помощи скрипта проверять, прошло ли с момента создания корзины 30 дней. Если да, то корзину очистить.
    Ответ написан
    Комментировать
  • Как правильно склонировать объеты?

    Wondermarin
    @Wondermarin
    const cloneObject = (o, count = 1) => {
      const objects = new Array(count).fill(o);
    
      return objects.map((obj, index) => ({ ...obj, id: obj.id + index }));
    };
    Ответ написан
  • Как на javascript замерить время выполнения функции (в наносекундах)?

    Robur
    @Robur
    Знаю больше чем это необходимо
    точное время выполнения одного вызова функции получить довольно сложно.

    во первых - performance.now возвращает дробное число, поэтому там в принципе может быть наносекундная точность. однако стандарт определяет что точность должна быть 5 микросекунд. Плюс браузеры могут специально занижать точность чтобы бороться с некоторыми атаками.

    поэтому правильно вызывать функцию много раз и считать среднее.
    так же в ноде есть process.hrtime которая дает наносекунды.

    оба этих метода "в лоб" не дадут нормального результата. Почему? потому что в реальности происходит много всего интересного при выполнении кода.

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

    Переключение происходит на лету и в общем виде вы не знаете когда это происходит.

    поэтому само по себе замерение скорости "функции" имеет мало смысла, так как там их несколько внутри. Если интересны детали - погуглите JIT, AOT и v8 optimizations.
    Сейчас важно то что есть "холодные" функции которые работают медленее но надеждее и как правило используются сразу и есть "горячие" варианты, которые компилятор начинает использовать когда видит что код вызван много раз, и условия не меняются. "Горячие" работают быстрее.

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

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

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

    И тут самый главный момент - даже если вы замерите эту скорость, что вы будете делать с этим знанием? В реальной программе при выполнении этого кода скорость может быть совсем не такая как вы намеряли. Эти тесты годятся только для своего общего развития

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

    Для практических задач в браузере есть профайлер, если нужно выяснить что же тормозит в конкретном коде, правильнее всего начать с него.
    Ответ написан
    5 комментариев
  • Отправка http-запросов через Postman vs js на сервер с ограниченным доступом?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Postman - это расширение браузера, а не обычная страница. У него другие права. В частности, он игнорирует политику CORS.
    Ответ написан
    Комментировать
  • Заменить окончания через JS?

    @PavelMos
    Можно же без регекспов
    var str1 = 'Зеленая поляна';
    re1='ная';
    re2='яна';
    var str_new = str1.replace(re1, 'ную');
    var str_new=str_new.replace(re2,'яну');


    Можно для падежей также https://morpher.ru/ использовать.
    Ответ написан
    2 комментария
  • Почему многие используют var в JavaScript?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Здравствуйте. Ну не видят люди в этом проблемы, вот и пишут. Не всем быть прогрессивными. :)
    Порой мне кажется, что лучше уж так, чем, как иногда встречаются советы, "просто используйте let вместо var и всё будет хорошо" (картинка лица с рукой).
    Ответ написан
    Комментировать
  • Как работает this в addEventListener?

    Tim-A-2020
    @Tim-A-2020
    для одного:


    для нескольких:

    Ответ написан
    Комментировать
  • Как сделать задержку перехода по ссылкам в странице на чистом JS?

    Spartak-2205
    @Spartak-2205
    Разработка и создание сайтов
    <a href="#" onclick="url=this.href; setTimeout('location.href='+url, 600); return false;">cсылка</a>
    Ответ написан
    5 комментариев