Задать вопрос
  • В какой момент можно использовать функции из другого скрипта?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Разве мы можем использовать скрипт до того, как добавили его в HTML-документ

    Так а где там использование скрипта до того как он загрузился?

    1) функция loadScript принимает на вход 2 аргумента - адрес для скрипта(src) и функцию, которая выполнится после загрузки скрипта из указанного адреса(callback).
    2) Функция loadScript создаёт элемент скрипт, в src которого передаёт одноимённый аргумент. Таким образом, происходит загрузка скрипта браузером.
    3) Задаётся обработчик события onload - то есть когда скрипт загрузится нужно выполнить колбэк - второй аргумент функции. В данном примере это 2 алерта.
    4) т.к. событие onload неизвестно когда произойдёт (оно асинхронное) то выполняется следующая строчка - добавление скрипта в шапку.
    5) Скрипт загрузился, выполнился коллбэк. Т.к. скрипт уже в шапке - доступна функция лодаша.
    Ответ написан
    3 комментария
  • Почему массив сохранил старое значение?

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

    потому что alert принимает только один аргумент и только его выводит.
    Если надо вывести все значения через запятую, то придётся запихнуть их в строку

    let num = 5;
    let num2 = 7;
    let num3 = 12;
    
    alert(`${num}, ${num2}, ${num3}`)
    Ответ написан
    1 комментарий
  • Почему программа загружается в разных областях памяти?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему программа каждый раз занимает различные области памяти?

    Потому что современные ОС делают это намеренно, чтобы затруднить эксплуатацию уязвимостей в ПО. Это называется ASLR: address space layout randomization. Обычно есть способ отключить ASLR глобально либо для отлаживаемых программ, чтобы добиться воспроизводимости результатов.
    Так, например, в linux это делается глобально с помощью файла /proc/sys/kernel/randomize_va_space либо командой setarch -R для одного конкретного процесса. Отладчик gdb по умолчанию отключает ASLR для отлаживаемых программ.
    Ответ написан
    3 комментария
  • Как решить проблему с функцией malloc()?

    mas = (int*)malloc(sizeof(int) * 2);
    Ответ написан
    Комментировать
  • Зачем освобождать память в C?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Если ты выделил память, она остается выделенной всегда. До завершения программы. Даже, если ты уже не знаешь где, куда и зачем выделил. Эта память будет числиться за твоей программой и занимать место.
    Соответственно, если ты будешь бесконтрольно выделять память и не освобождать её, свободная память кончится и, тут два варианта:
    1. Твоя программа выдаст ошибку Out of memory, при очередном выделении памяти (если твоя программа собрана под 32бита)
    2. ОС будет пытаться выделять память, "сбрасывая" другие программы в файл подкачки, что приведёт к огромным тормозам, а затем, когда и там всё кончится, твоя программа вылетит с той же ошибкой.
    Ответ написан
    Комментировать
  • Зачем освобождать память в C?

    Vamp
    @Vamp
    Потому что неосвобождённая память остаётся занятой даже после выхода указателя за пределы области видимости. В итоге если вы будете только аллоцировать память, но не освобождать её, то рано или поздно программа сожрёт всю память в системе.
    Ответ написан
    1 комментарий
  • Почему после команды git rm выдаёт ошибку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Git заподозрил что вы не совсем в здравом уме. Он не понимает, зачем вы написали эту команду после того как индексировали файл для будущего коммита, но ещё не зафиксировали его. И теперь гит просит уточнить, что именно вы хотите сделать. Либо вы передумали только коммитить его и хотите лишь удалить файл из индекса, либо собираетесь удалить файл совсем.
    Ответ написан
    3 комментария
  • Почему Git-команда ведёт себя так?

    @qwazimord
    Интроверт
    Эта команда выводит конфиг постранично. Если нажать пробел - появится следующая страница, если q - то команда завершится и снова можно будет вводить команды. Перед нажатием q убедитесь, что раскладка английская, а не русская.
    Ответ написан
    3 комментария
  • Почему не работает background-image?

    ev_g
    @ev_g
    Web dev.
    Потому что у тебя background: #C4C4C4 переписывает background-image.

    Нужно изменить на background-color: #C4C4C4, либо поменять их местами.
    Ответ написан
    Комментировать
  • Почему весь текст появляется разом, а не по буквам?

    thewind
    @thewind
    php программист, front / backend developer
    Потому что вы создали length таймаутов одновременно в цикле, и все на 500 мс. Вот они все и отработают одновременно. Умножьте 500 на i и дело с концом
    Ответ написан
    3 комментария
  • Почему не работает onblur на textarea?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Вот решение твоей задачи.
    Дело в том что ты пытаешься повесить событие "onblur" на ещё не существующий элемент.

    <div onclick="transformToTextarea(this);" style="width: 50px; height: 50px; background-color: blue;"></div>

    function transformToTextarea(el) {
      el.outerHTML = '<textarea onblur="transformToDiv(this);">' + el.innerHTML + '</textarea>';
    }
    function transformToDiv(el){
      el.outerHTML = '<div onclick="transformToTextarea(this);">' + el.value + '</div>';
    }

    В данном случае заранее объявлено две функции, а в событии через атрибуты самого элемента указывается их вызов.
    Ответ написан
    5 комментариев
  • Почему программа на C не выводит результат?

    @res2001
    Developer, ex-admin
    Не используйте pow. Она работает с double, а это числа с плавающей точкой. У double точность примерно до 15 значащих десятичных цифр, дальше все приближенно. https://en.wikipedia.org/wiki/IEEE_754#Basic_and_i...
    У вас целочисленная арифметика везде - просто домножайте каждую итерацию на 10. И не забывайте везде использовать long long.
    Вам же уже давали пример в одном из прошлых вопросов.
    И n там вроде - 18.
    Ответ написан