Вопрос №55845 от пользователя Сириус в уроке «Типизация», курс «Введение в программирование»
На код вычисления первого числа потратил 15 мин., остальное время, 17.5 часов (с 5:00 по 22:30 воскресенья), потратил на то, что бы понять, как вернуть функцию. Болела голова, глаза пухли, экран плыл, но не хотел сдаваться. У меня просто ничего не выводилось на экран, вообще ничего. Волшебным образом (помог консоль.лог) почти в бреду что-то сделал и заработало!!! Потратил ещё несколько часов, что бы понять свой код, что я сделал. Второй функции не сделал, но мне и этого достаточно, я очень доволен своим кодом. По своему коду есть вопросы к вам, но вы "не обсуждаете рабочие коды", поэтому забуду эту шалость. Увидев решение учителя, я могу точно сказать, что я этого бы не повторил, даже близко (оно мне даже не нравится...) и если кто из студентов решил так, как учитель, значит они пришли сюда уже со знаниями (неплохими) и для них этот курс слаб. Материала вашего курса недостаточно для такого кода (даже для моего кода). Код учителя не сложный, но хитрый и надо знать тонкости. Поэтому по коду учителя у меня к вам вопрос: Если мы задали длинное число и требуется повторить цикл. На первом круге получается, к примеру, трёхзначное число. Как оно попадает "второй" раз в аргумент основной функции, когда аргументом там стоит =(num)=> ...? - Я для себя решил, что когда функция выполняется второй раз, она минует первые две строчки (определение функции и переменной) и сразу переходит к циклу и это есть правило... Дополните меня ***или* исправьте.** Второй вопрос уже общий. Почему результат начинает глючить, показывать неверный ответ при достижении 16-и значного числа и выше, а при достижении 22-х значного и выше выдаёт NaN??? __мой код:__ https://ru.hexlet.io/code_reviews/422299
Сириус, здравствуйте.
- Если мы задали длинное число и требуется повторить цикл. На первом круге получается, к примеру, трёхзначное число. Как оно попадает "второй" раз в аргумент основной функции, когда аргументом там стоит =(num)=> ...?
В аргумент основной функции число второй раз не попадает. Все вычисления происходят в цикле.
Для примера возьмем число 169. Код из тела цикла while выполняется пока условие 'result >= 10' истинно.
- Запускается цикл. (169 >= 10).
- Выполняется функция sumDigits(169), возвращается результат 16. (16 >= 10 цикл продолжается).
- Выполняется функция sumDigits(16), возвращается результат 7.
- Так как результат не удовлетворяет условию цикла, происходит выход из цикла и функция addDigits возвращает результат.
- Почему результат начинает глючить, показывать неверный ответ при достижении 16-и значного числа и выше, а при достижении 22-х значного и выше выдаёт NaN?
В JavaScript тип «number» не может содержать числа больше, чем 2 в степени 53, состоящее из 16 цифр (или меньше, чем -2 в степени 53 для отрицательных). Это техническое ограничение вызвано их внутренним представлением. Для 'гигантских чисел' используют тип BigInt.
Привет, кажется я пошел твоим путем, вот код, скажи пожалуйста ты разобрался с этим решением? если да, то подскажи, что у меня не так
Семён, я сейчас немножко отошёл от темы, поэтому с ходу все твои ошибки разобрать не смогу. Парюсь над "Основы командной строки", работаю с терминалом. Но сразу видно, что у тебя весь код не годен. Весь код наполнен странными решениями, не соблюдаешь синтаксис (!!!), а это очень важно. Даже при "правильном" решении, но с ошибками синтаксиса интерпретатор может не принять код, решение не пойдёт. Мне кажется тебе надо начинать всё с начала. Скрупулёзно выполняя все требования до мелочей. Может ты уже прошёл, но всё же ещё раз дам ссылку на полезный ресурс для новичков https://ru.code-basics.com/languages/javascript , он более понятен и даёт основу, его нужно было пройти до этого курса. \ Ещё советую при тупиковых ситуациях 1) применять метод Утёнка; 2) Не бояться ломать и полностью удалять свой код, начиная всё с чистого листа, иногда ошибка кроется в замыливании сознания, ты её автоматом пропускаешь; 3) Везде, всегда суй console.log();, очень помогает понять ход программы. \ Удачи, отпишись, как успехи.
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







