Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (11)

Наибольший вклад в теги

Все теги (67)

Лучшие ответы пользователя

Все ответы (107)
  • Как правильно использовать исключения?

    Тут достаточно просто все.
    Исключения помогают проскочить участок кода при выполнении определенных условий.
    Причем, при коде без вызовов функций - всегда можно заменить на if/else, но код будет многовложенным (один if в другом). Но такой код естественно давно никто не пишет.

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

    Идея же исключений такая:
    1. У нас есть алгоритм, который должен работать по заданной схеме. Мы нигде на уровне выше не проверяем корректность возвращаемых значений или правильность выполнения уровня ниже - он должен выполниться правильно или не выполниться. Это условие рождается из понимания инкапсуляции - каждый отвечает за свой кусок кода.
    2. Если в какой момент момент, метод (кусок кода), отвечающий за определенную функциональность понимает, что не может выполнить назначенную ему операцию - он сообщает об этом на уровень выше.
    3. Уровень выше может обработать исключительную ситуацию, либо (если не знает как) - передать исключение еще уровнем выше по стеку вызовов.

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

    Интересный момент реализации исключений в lisp: там можно выполнить код вызвавший исключение повторно (например попытаться подключиться к базе второй раз средствами самого исключения).
    Ответ написан
    Комментировать
  • Как разобрать объект?

    const newArray = Object.keys(checkboxGroup) // Превращаем объект в массив ключей checkboxGroup
         .filter(name => checkboxGroup[name].checked === true) // Создаем новый массив из ключей, в котором будут только те, для которых у объекта - checked есть истина
         .map(name => checkboxGroup[name].value); // Создаем новый массив из свойств value
    Ответ написан
  • Как передать данные в js файл?

    Если в lib у вас лежат библиотеки, то там код не должен быть привязан к конкретным данным, т.е. там либо список функций, либо классы.
    А вот в каком месте вы их вызываете?
    Ну и как вариант всегда в html передать эти данные

    <input type="hidden" id="xxx" value="2" />
    Ответ написан
    Комментировать
  • В каком порядке выполняются функции?

    Прочитайте про модель выполнения event-loop
    Вызов setTimeout добавит событие в очередь по прошествии времени, указанного во втором аргументе вызова. Если очередь событий на тот момент будет пуста, то событие обработается сразу же, в противном случае событию функции setTimeout придется ожидать завершения обработки остальных событий в очереди. Именно поэтому второй аргумент setTimeout корректно считать не временем, через которое выполнится функция из первого аргумента, а минимальное время, через которое она сможет выполниться.
    Ответ написан
    4 комментария
  • Можно ли использовать github как хостинг для лендингов с PHP скриптами?

    Нет, GitHub Pages предназначены для хостинга только статичных файлов, исполняемые файлы на сервере не поддерживаются.
    Однако определять язык браузера и делать редирект можно и с помощью javascript.
    <script>
    var userLang = navigator.language || navigator.userLanguage; 
    alert ("The language is: " + userLang);
    if (userLang === "ru-RU"){
    window.location.href="https://google.com/";
    }
    </script>
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (19)