Исправление ошибки #ИМЯ?
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel Web App Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще. Меньше
Обычно ошибка #ИМЯ? Ошибка отображается в формуле из-за опечатки в имени формулы. Рассмотрим пример:
Важно: Ошибка #ИМЯ? означает, что нужно исправить синтаксис, поэтому если вы видите ее в формуле, устраните ее. Не скрывайте ее с помощью функций обработки ошибок, например функции ЕСЛИОШИБКА.
Чтобы избежать опечаток в именах формулы, используйте мастер формул в Excel. Когда вы начинаете вводить имя формулы в ячейку или строку формул, список формул, соответствующих введенным словам, отображается в раскрывающемся списке. После ввода имени формулы и открывающей скобки мастер формул отображает подсказку с синтаксисом.


Мастер функций также позволяет избежать синтаксических ошибок. Выделите ячейку с формулой и на вкладке Формулы нажмите Вставить функцию.
Excel автоматически загружает мастер.

При выборе каждого аргумента Excel предоставляет соответствующие сведения для каждого из них.
Ниже приведены другие причины #NAME? .
Формула ссылается на несуществующее имя
Если в формуле есть ссылка на имя, не определенное в Excel, вы увидите #NAME? ошибку «#ЗНАЧ!».
См. следующий пример функции SUM, ссылающейся на Profit, которая является неопределенным именем в книге.

Решение. Определите имя в диспетчере имен, а затем добавьте его в формулу, выполнив следующие действия.

- Если у вас уже есть данные в электронной таблице и вы хотите назначить имя определенным ячейкам или диапазону ячеек, сначала выделите ячейки в электронной таблице. Если вы хотите создать диапазон, можно пропустить этот шаг.
- Перейдите в раздел Формулы >Определенные имена , > выберите Определить имя, а затем — Определить имя.
- Введите уникальное имя.
- В поле Область выберите, если нужно, чтобы имя было доступно только на листе или во всей книге.
- При желании введите примечание.
- Нажмите кнопку ОК. Далее необходимо добавить имя в формулу.
- Курсор должен быть в том месте формулы, куда вы хотите добавить созданное имя.
- Перейдите в раздел Формулы >Определенные имена > выберите Использовать в формуле, а затем выберите определенное имя, которое нужно добавить.
Подробнее об использовании определенных имен см. в статье Определение и использование имен в формулах.
Определенное имя указано неправильно
Если синтаксис неправильно ссылается на определенное имя, вы увидите #NAME? ошибку «#ЗНАЧ!».
В предыдущем примере в электронной таблице было создано определенное имя profit . В приведенном ниже примере имя указано неправильно, поэтому функция по-прежнему выдает ошибку #ИМЯ? .

Решение. Исправьте опечатку и повторите попытку.
Совет: Вместо того чтобы вручную вводить определенные имена в формулах, предоставьте это Excel. Перейдите в раздел Формулы > Определенные имена , > выберите Использовать в формуле, а затем выберите определенное имя, которое нужно добавить. Excel добавляет имя в формулу.
Текстовые значения не заключены в двойные кавычки
При добавлении текстовых значений в формулы необходимо заключать их в кавычки, даже если они содержат только пробел. Если синтаксис пропускает двойные кавычки «» для текстового значения, вы увидите ошибку #NAME.

В синтаксисе в этом примере отсутствуют двойные кавычки для has; который объясняет ошибку.
Решение. Проверьте, нет ли в формуле текстовых значений без кавычек.
В ссылке на диапазон пропущено двоеточие
Если вы пропустите двоеточие в ссылке на диапазон, формула отображает #NAME? .
В приведенном ниже примере формула ИНДЕКС выдает ошибку #ИМЯ?, так как в диапазоне B2 — B12 нет двоеточия.

Решение. Убедитесь, что все ссылки на диапазон включают двоеточие.
Вы используете функцию, требующую надстройку, которая не включена в Excel
Некоторые функции Excel работают только тогда, когда включена соответствующая надстройка. Использование этих функций в противном случае приводит к #NAME? ошибку «#ЗНАЧ!». Например, чтобы использовать функцию EUROCONVERT , необходимо включить надстройку Euro Currency Tools . Если вы используете пользовательские функции или макросы, для которых требуется инструмент анализа, убедитесь, что включена надстройка Analysis ToolPak .
Чтобы включить надстройку в Excel:
- Перейдите в раздел Параметры > файлов .
- Выберите Надстройки.
- В списке Управление выберите Надстройки Excel, а затем нажмите кнопку Go.
- Установите соответствующий флажок и нажмите кнопку ОК.
Дополнительные сведения
Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.
Сообщения об ошибках и состоянии, которые появляются на панели управления
В этом разделе описывается значение сообщений, появляющихся на панели управления, и действия, которые следует предпринять, при появлении конкретного сообщения.
Сообщения о состоянии (в алфавитном порядке)
Принтер обновляет @Remote certificate (Дистанционный сертификат).
Принтер выполняет калибровку цвета. Подождите немного.
Принтер в режиме энергосбережения. Для возвращения в нормальный режим нажмите на любую клавишу.
В режиме 16-ричного Dump аппарат принимает данные в шестнадцатеричном формате. По завершении печати выключите аппарат, а затем включите снова.
Принтер загружает тонер. Подождите.
Принтер не в сети и печатать не может.
Это сообщение может появляться на несколько секунд. Оно означает, что принтер выполняет подготовку, охлаждает блок термозакрепления, инициализирует блок проявки, загружает тонер или выполняет действия по обслуживанию. Подождите немного.
Принтер проверяет наличие обновлений для ПО.
Принтер выполняет печать. Подождите немного.
Печать приостановлена. Выключите принтер и включите снова для восстановления.
Это сообщение о готовности, отображаемое по умолчанию. Принтер готов к использованию. Действий не требуется.
Принтер выполняет дистанционную диагностику.
Принтер сбрасывает задания задания печати. Подождите немного.
Принтер меняет настройки. Подождите немного.
Установите блок закрепления правильно.
Блок термозакрепления возможно неправильно установлен. Выключите принтер и заново устновите блок термозакрепления.
Если сообщение появляется и после новой установки, обратитесь к торговому агенту или в сервисный центр.
Принтер связывается с сервисным центром Smart Service. Некоторые его функции могут быть недоступны.
Принтер обновляет @Remote certificate (Дистанционный сертификат).
Ожид.данных для печати.
Принтер ожидает следующие данные для печати. Подождите немного.
Не удалось обн.серт.@Remote
Сбой обновления дистанционного сертификата. Обратитесь к своему представителю по продажам или обслуживанию.
На дистанционной линии произошла ошибка.
В блоке финишера кончились скобы. Установите их или продолжайте печать без функции степлирования.
Добав.скрепки и очист. блок перфор.
В финишере нет скоб, а приемник пробойника заполнен. Добавьте скобы и опорожните приемник.
В принтере закончился указанный тонер. Замените картридж указанного тонера. См. Добавление тонера .
На удаленном сервисном модеме произошла ошибка связи.
Неверное имя прокси-пользователя или пароль. Проверьте настройки прокси-сервера и введите правильное имя прокси-пользователя или пароль.
Нет связи с сетью./ Проверьте IP-адрес.
Ошибка подключения к сети. Проверьте правильность IP-адреса.
Нет связи с сетью./ Свяжитесь с админ.
Ошибка подключения к сети. Обратитесь к администратору сети.
Нет связи с сетью./ Свяж.с сервисом.
Ошибка подключения к сети.
Невозможна связь DHCP с (101/201)
Невозможно получение IP-адреса с сервера DHCP. Обратитесь к сетевому администратору.
Невозможна связь с/ печати NetWare. (107/207)
Соединение с сервером печати NetWare недоступно. Обратитесь к администратору сети.
Невозможна связь с/ сервером NetWare.(106/206)
Недоступно соединение с сервером NetWare. Обратитесь к сетевому администратору.
Проверьте, поддерживается ли тип распечатываемого файла. Проверьте сбои подачи и обратитесь за помощью к сетевому администратору.
Не опозн.модуль SDRAM/ Свяж.с сервисом.
Принтер не может распознать установленную опциональную память.
Невозм.устан. IPv4 в/ диап.той же подсист. (###)
Адрес IPv4 невозможно установить в тех же диапазонах подсети.
Изм. (tray name) наслед. установки: A4 (Переработанная)
Указанный тип бумаги отличается от бумаги в указанном лотке. Данное сообщение не применяется к обходному лотку. Нажмите [Изменить] для изменения параметров лотка, [Сброс задания] — для сброса задания или [Подача формы] для принудительной печати.
Проверьте состояние подключения удаленной линии.
Проверьте установки/ сети.(103/203)
Неправильная настройка IP-адреса. Проверьте IP-адрес, маску подсети и адрес шлюза. Для дополнительной информации см. Конфигурация Ethernet .
Нет связи:Wireless карта Выкл.питание, пров.карту.
Проверьте, установлена ли плата беспроводной ЛВС.
Проверьте, поддерживается ли эта плата. Если поддерживается, проверьте правильность ее установки.
Установите надлежащую плату.
Закройте крышку, указанную на панели управления.
Текущ.Wireless карта не совместим с WPA (###)
Используемая беспроводная локальная сеть несовместима с WPA.
Могло произойти наруш.доступа к устр. . Свяжитесь с адм.
Произошла попытка доступа к принтеру из-за пределов сети.
Режим дуплекса в поз.выкл на (tray name)
Дуплексный режим для указанного лотка отключен; вы можете использовать только одностороннюю печать. Нажмите [Изменить] для изменения настроек лотка, [Сброс задания] — для сброса задания или [Подача формы] для принудительной печати.
Очистите приемщик перфор.
Приемник пробойника заполнен. Опорожните его.
Ошибка сетевой платы.
Обнаружена ошибка платы Ethernet. Выньте и установите снова плату контроллера. Если проблема не устраняется, обратитесь к торговому агенту или в сервисный центр.
Невозм.соедин.с сервером для диагност.Remote.
Принтер не может установить связь со шлюзом дистанционной диагностики. Проверьте подключение к шлюзу удаленного сервера.
Буклет.лоток финишера заполнен. Удалите бумагу.
Буклетный лоток финишера заполнен. Удалите бумагу из лотка.
Ош.финиш.Питание ВЫКЛ./ВКЛ./ Возн.ош.свяж.с серв.
В блоке финишера произошла ошибка. Выключите питание и включите его снова. Если ошибка повторяется, обратитесь к представителю по продажам или обслуживанию.
В двигателе передвижного лотка произвошла ошибка. Обратитесь к представителю по продажам или обслуживанию.
Раздел.лоток финишера заполнен. Удалите бумагу.
Передвижной лоток финишера заполнен. Удалите бумагу из лотка.
Верх.лоток финишера заполнен. Удалите бумагу.
Верхний лоток финишера заполнен. Удалите бумагу из лотка.
Блок перф. Нажм.[Отм.] чтобы отм.l реж.и печ.
Приемник пробойника заполнен. Опорожните приемник.
Установлен тонер стороннего производителя. Установите тонер, рекомендуемый для данного принтера.
IPв6 адрес уже раб. Лок.адрес.ссылк. (109/209)
Этот IPv6-адрес уже существует. Обратитесь к своему сетевому администратору.
IPв6 адрес уже раб. Установл.адрес (109/209)
Этот IPv6-адрес уже существует. Обратитесь к своему сетевому администратору.
IPв6 адрес уже раб. Конфиг.рук-ва адр. (109/209)
Этот IPv6-адрес уже существует. Обратитесь к своему сетевому администратору.
ЛСД ош.Вкл./Выкл.питания Возн.ош.свяж.с серв.
В ЛБЕ произошла ошибка. Выключите питание и выключите его снова. При повторении ошибки обратитесь к представителю по продажам или обслуживанию.
Загрузите бумагу в (имя лотка) или нажмите [Отмена] для подачи формы. A4 (Перер.)
В указанном лотке нет бумаги. Загрузите бумагу в лоток, нажмите [Сброс задания] для сброса задания или [Подача формы] для принудительной печати.
Загр. бумагу в (tray name) A4 (Перер.). (Перер.)
В указанном лотке нет бумаги. Загрузите бумагу в лоток, нажмите [Сброс задания] для сброса задания или [Подача формы] для принудительной печати.
Ввод логина не удался из-за разъед.польз. Свяжитесь с адм.
Ошибка входа ввиду неоднократного ввода неправильного пароля.
Принтер не может обнаружить дополнительный модуль SDRAM. Возможно, что он установлен неправильно.
Проверьте, правильно ли он установлен.
Подробнее об установке устройства см. в Установка модулей расширения памяти .
В лотке нет бумаги.
В указанном лотке нет бумаге. Заправьте бумагу.
Бумага в финишере
В финишере осталась бумага. Откройте крышку финишера и удалите бумагу.
Бум.в финиш. Откр.крышку удал.бум.
В финишере осталась бумага. Откройте крышку финишера и удалите бумагу.
Несовп.типа/разм.бумаги. Измените настройки на: A4 (Перер.)
Размер и тип бумаги во всех лотках не соответствует параметрам, заданным для лотка, когда выбран режим Автоматический выбор бумаги. Нажмите [Изменить] для изменения настроек, [Сброс задания] — для сброса задания или [Подача формы] для принудительной печати.
Возникла проблема с двигателем лотка для бумаги. Выберите другой лоток для принудительной печати или нажмите [Сброс задания] для отмены задания.
Тест самодиагностики принтера закончился неудачей из-за ошибки обратной связи. Замените плату IEEE 1284, которая вызвала ошибку.
Ошибка шрифта принтера.
Проблемы с файлом шрифта принтера.
Обратитесь к торговому представителю или в сервисный центр.
[Печать] без след.режима? [Стэплир.] [Перфор.] [Стэплир./Перфор.]
Продолжайте печать без использования функции, указанной в третьей строке на дисплее. Нажмите [OK] для отмены показанных режимов и продолжения печати.
Печать приостан. Нажм.Продолж. с компьютера.
Печать приостановлена. Возобновите задание печати со своего компьютера.
Пробл.с жест.диск. Свяж.с сервисом.
Принтер не может обнаружить жесткий диск. Возможно, что он установлен неправильно.
Проверьте, правильно ли установлен диск или обратитесь к торговому представителю или в сервисный центр.
Подробнее об установке устройства см. в Установка модулей интерфейса .
Проблема: Wireless карта Свяж.с сервисом.
Принтер обнаружил сбой карты беспроводной LAN или Вluetooth, либо не может определить беспроводную карту. Возможно, устройство установлено неправильно.
Проверьте правильность установки карты беспроводной LAN или Bluetooth либо обратитесь к вашему представителю по продажам или обслуживанию.
Подробнее об установке устройства см. в Установка модулей интерфейса .
Ош.прокси.Если она возн.: Свяж.с сервисом.
Возникла проблема связи с прокси-сервером. Возможные причины: неправильный адрес прокси-сервера или номер порта, прокси-сервер не активирован, неправильный центр URL, либо прокси-сервер не установлен.
Если проблема не устраняется, обратитесь к торговому агенту или в сервисный центр.
Готово Нет связи с сервером
Нет ответа от сервера.
Готово Проблема:Модуль принтера
Ошибка модуля DIMM (слот 1).
Готово Проблема: модуль PS3 Свяж.с сервисом.
Ошибка модуля DIMM (слот 1).
Полон: Выходной лоток(ки)
Выходные лотки заполнены. Удалите бумагу.
Заполнено: Почтовый ящик (имя лотка)
Указанный лоток почтового ящика заполнен. Удалите бумагу.
Замените блок закрепления.
Скоро н.зам.блока закрепл. Треб. новый набор. Соед.с локальн.венд.
Скоро нужно заменить блок термозакрепления. Обратитесь к представителю по продажам или обслуживанию.
Нужно заменить блок переноса.
Зам.бл.промеж.передачи. Треб.нов.блок. Соед.с локальн.венд.
Скоро нужно будет заменить блок переноса. Обратитесь к представителю по продажам или обслуживанию.
Нужно заменить блок черного барабана. См. Замена черного/цветных барабанов .
Скоро н.замен. PCU:Черный. Треб.нов.PCU. Соед.с локальн.венд.
Скоро нужно будет заменить блок черного барабана. Обратитесь к представителю по продажам или обслуживанию.
Нужно заменить блоки цветных барабанов. См. Замена черного/цветных барабанов .
Скоро н.замен. PCU:Цветной. Треб.нов.PCU. Соед.с локальн.венд.
Скоро нужно будет заменить блоки цветных барабанов. Обратитесь к представителю по продажам или обслуживанию.
Правильно установите лоток для бумаги. A4 (Перер.)
Лоток для бумаги установлен неправильно. Повторно установите указанный лоток или выберите для печати другой лоток.
Аутент. SD карты не удалась Возн.ош.свяж.с серв.
Ошибка аутентификации карты SD. Выключите питание и выключите его снова. При повторении ошибки обратитесь к представителю по продажам или обслуживанию.
Установите блок закрепления правильно.
Блок предохранителей установлен неправильно. Переустановите его.
Установите блок промеж. передачи правильно.
Блок передачи установлен неправильно. Переустановите его.
Уст.картридж тонера правильно.
Указанный картридж тонера установлен неправильно. Переустановите его.
Устан.лоток на нижн. или [Отмена] на под.фор. A4 (Перер.)
Несоответствие типа и размера бумаги при выборе режима автоматического выбора лотка. Настройте лоток на указанный тип и размер бумаги, нажмите [Сброс задания] для сброса задания или [Подача формы] для принудительной печати.
Уст.исп.бутыль тонера прав.
Колба отработанного тонера установлена неправильно. Переустановите ее.
SRAM пробл.SRAM был отформ. SRAM отформатир.
В SRAM произошла ошибка.
Стандарт.лот.заполнен. Удалите бумагу.
Стандартный выходной лоток заполнен, или возникла проблема с двигателем лотка для бумаги. Удалите бумагу из лотка.
Ош.Стэплир. Свяж.с сервисом.
Ошибка в скобяном блоке. Обратитесь к представителю по продажам или обслуживанию.
Такой же IP адр.сущ. на неск.интерфейсах. (###)
Одинаковый IP-адрес уже установлен на нескольких интерфейсах. Обратитесь к сетевому администратору.
Такой же IPv4 адрес уже существует.(102/202)
Указанный для этого аппарата IPv4-адрес используется другим устройством в сети. Обратитесь к сетевому администратору.
Выделенные задания уже напечатаны или отменены.
Это сообщение появляется, если вы печатаете или удаляете задание из Web Image Monitor. Нажмите на Выход на экране сообщения.
Это имя NetBIOS уже используется.(108/208)
Имя NetBIOS, указанное для аппарата, уже используется другим устройством в сети. Обратитесь к своему сетевому администратору.
Тонер почти закончился.
В принтере почти закончился тонер, указанный в сообщении. Обратитесь к представителю по продажам или обслуживанию.
(tray name) Ош.Вк./Вык.пит Возн.ош.свяж.с серв.
Возникла ошибка двигателя входного лотка. Выключите питание и включите его снова.
Выкл.перекл.питания, затем уст.PCU прав.
Черный барабан/цветные барабаны установлены неправильно. Выключите питание и переустановите их.
Проблема с USB. Свяж.с сервисом.
Принтер обнаружил сбой платы USB. Выключите питание и включите его снова. При повторении проблемы обратитесь к представителю по продажам или обслуживанию.
Зн.уст.для IPv6/Доп. адреса неправильны (110/210)
Недействителен адрес IPv6 или шлюза. Проверьте параметры сети.
Отработанный кртридж почти заполнен Соед.с локальн.венд. Свяж.с сервисом.
Колба для отработанного картриджа почти заполнена. Обратитесь к представителю по продажам или обслуживанию.
Исп.тонер почти заполн.
Замените емкость отработанного картриджа. См. Замена картриджа отработанного тонера .
Аутент. WPA незаверш.(211)
Аутентификация WPA не может быть выполнена. Обратитесь к своему сетевому администратору.
Предупреждающие сообщения о расходных материалах (в алфавитном порядке)
Нет тонера. Замените картр.тонера
В принтере нет цвета тонера, указанного в сообщении. Замените указанный картридж тонера. См. Добавление тонера для получения инструкций по установке.
Извещ.замены Замените блок закрепления.
Нужно заменить блок предохранителей. Обратитесь к представителю по продажам или обслуживанию. См. Замена блока термозакрепления, ролика переноса и пылевой фильтра for installation instructions.
Нужно заменить блок переноса. Обратитесь к представителю по продажам или обслуживанию. См. Замена блока переноса для получения инструкций по установке.
Извещ.замены Замените PCU:Черный.
Нужно заменить блок черного барабана. Обратитесь к представителю по продажам или обслуживанию. См. Замена черного/цветных барабанов для получения инструкций по установке.
Извещ.замены Замените PCU:Цветной.
Нужно заменить блоки цветных барабанов. Обратитесь к представителю по продажам или обслуживанию. См. Замена черного/цветных барабанов для получения инструкций по установке.
Не удалось заказать ЗИП.
Сбой автоматического заказа на поставку. Это сообщение указывает расходные материалы, которые пытался заказать принтер.
Ошибки печати/данных (в алфавитном порядке)
Произошла ошибка команды RPCS. Проверьте подключение между принтером и компьютером, проверьте правильность используемого драйвера для принтера, а также соответствие настроек памяти для памяти, установленной в принтере.
Ошибка сжатия данных
Принтер определил повреждение сжатых данных. Проверьте подключение между компьютером и принтером. Проверьте правильность работы программы, используемой для сжатия данных.
Возникла ошибка при восстановлении памяти.
(a) Ошибка памяти при расчерчивании.
(b) Ошибка обработки фрейма.
Добавьте принтеру дополнительную память. См. Установка модулей расширения памяти для получения инструкций по установке памяти.
Ошибка извлечения памяти.
Произошла ошибка восстановления памяти. Данное предупреждение отображается, когда сбоев нельзя избежать даже посредством установки дополнительной памяти в принтер. Например, данная ошибка может появляться в случае сбоя инициализации RPCS. Выключите принтер и включите его снова. Если ошибка не исчезла, замените модуль памяти. См. Установка модулей расширения памяти для получения инструкций по установке памяти.
Ошибка типа бумаги
Тип бумаги, указанный драйвером, не распознан принтером. Извлеките последнюю информацию о типе из принтера.
Данная ошибка появляется, когда принтер получает сигнал о неожиданном окончании файла. Попытайтесь выполнить печать повторно.
Отправка дан.не удал.
Принтер получил команду от драйвера приостановить передачу данных. Проверьте правильность работы хоста.
- Убедитесь в детальном описании ошибки путем распечатки журнала ошибок. Подробнее см. в руководстве по программному обеспечению.
Сообщения об ошибках
В таблице ниже приведены сообщения об ошибках и советы по их устранению. Вы можете выполнять поиск по словам в сообщении и выбирать разделы Партнерского центра, в которых появляется ошибка. Подробную информацию можно найти в Справочном центре, переходя по ссылкам в последнем столбце таблицы.
Сообщение об ошибке
- ePub
- JPEG, TIFF, PDF и PNG (только обложки)
- Формат: GIF, JPEG или PNG.
- Размер: не более 190 пикселей в ширину и 50 пикселей в высоту.
- Максимальный размер файла: 50 КБ.
- WORLD
- ECZ
- Указанная продолжительность не соответствует реальной. Если у вас появляется эта ошибка, сравните продолжительность записи в файле аудиокниги с данными, указанными в ее метаданных.
- Обнаружены проблемы с качеством аудио. Если у вас появляется эта ошибка, попросите издателя выполнить инструкции из статьи Как устранить проблемы с качеством звука в аудиокнигах.
- PDF;
- ePub;
- JPEG, TIFF, PDF и PNG (только обложки).
- На вкладке Цены указаны недействительные цены.
- В Платежном центре нет платежного профиля.
- В Платежном центре не указана территория продаж.
- Территория продаж не связана с платежным профилем.
- Территория продаж неактивна.
- © Google LLC, 2023
- Политика конфиденциальности
- Условия предоставления услуг
Что пошло не так? Устранение ошибок JavaScript
Когда вы создали игру «Угадай номер» в предыдущей статье, вы, возможно, обнаружили, что она не работает. Не бойтесь — эта статья призвана избавить вас от разрыва волос над такими проблемами, предоставив вам несколько простых советов о том, как найти и исправить ошибки в программах JavaScript.
| Нужно: | базовая компьютерная грамотность, базовое понимание HTML и CSS, понимание того, что такое JavaScript. |
|---|---|
| Цель | получить способность и уверенность в том, чтобы приступить к исправлению простых проблем в вашем собственном коде. |
Типы ошибок
Когда вы делаете что-то не так в коде, есть два основных типа ошибок, с которыми вы столкнётесь:
- Синтаксические ошибки: Это орфографические ошибки в коде, которые фактически заставляют программу вообще не запускаться, или перестать работать на полпути — вам также будут предоставлены некоторые сообщения об ошибках. Обычно они подходят для исправления, если вы знакомы с правильными инструментами и знаете, что означают сообщения об ошибках!
- Логические ошибки: Это ошибки, когда синтаксис действительно правильный, но код не тот, каким вы его предполагали, что означает, что программа работает успешно, но даёт неверные результаты. Их часто сложнее находить, чем синтаксические ошибки, так как обычно не возникает сообщение об ошибке, которое направляет вас к источнику ошибки.
Ладно, все не так просто — есть и другие отличия, которые вы поймёте, пока будете изучать язык JavaScript глубже. Однако вышеуказанной классификации достаточно на раннем этапе вашей карьеры. Мы рассмотрим оба эти типа в дальнейшем.
Ошибочный пример
Чтобы начать работу, давайте вернёмся к нашей игре с угадыванием чисел — за исключением того, что мы будем изучать версию с некоторыми преднамеренными ошибками. Перейдите в Github и сделайте себе локальную копию number-game-errors.html (см. здесь как это работает).
- Чтобы начать работу, откройте локальную копию внутри вашего любимого текстового редактора и вашего браузера.
- Попробуйте сыграть в игру — вы заметите, что когда вы нажимаете кнопку «Submit guess», она не работает!
Примечание: Возможно, у вас может быть собственная версия игрового примера, которая не работает, которую вы можете исправить! Мы по-прежнему хотели бы, чтобы вы работали над статьёй с нашей версией, чтобы вы могли изучать методы, которые мы здесь преподаём. Затем вы можете вернуться и попытаться исправить ваш пример.
На этом этапе давайте рассмотрим консоль разработчика, чтобы увидеть, можем ли мы видеть какие-либо синтаксические ошибки, а затем попытаемся их исправить. Вы узнаете, как это сделать, ниже.
Исправление синтаксических ошибок
Раньше в курсе мы заставили вас набрать некоторые простые команды JavaScript в консоль разработчика JavaScript (если вы не можете вспомнить, как открыть это в своём браузере, следуйте предыдущей ссылке, чтобы узнать, как это сделать). Что ещё более полезно, так это то, что консоль предоставляет вам сообщения об ошибках всякий раз, когда существует синтаксическая ошибка внутри JavaScript, которая подаётся в механизм JavaScript браузера. Теперь пойдём на охоту.

- Перейдите на вкладку, в которой у вас есть number-game-errors.html, и откройте консоль JavaScript. Вы должны увидеть сообщение об ошибке в следующих строках:
- Это довольно простая ошибка для отслеживания, и браузер даёт вам несколько полезных бит информации, которые помогут вам (скриншот выше от Firefox, но другие браузеры предоставляют аналогичную информацию). Слева направо, у нас есть:
- Красный «x» означает, что это ошибка.
- Сообщение об ошибке, указывающее, что пошло не так: «TypeError: guessSubmit.addeventListener не является функцией»
- Ссылка «Узнать больше», которая ссылается на страницу MDN, которая объясняет, что эта ошибка означает в огромных количествах деталей.
- Имя файла JavaScript, который ссылается на вкладку «Отладчик» консоли разработчика. Если вы перейдёте по этой ссылке, вы увидите точную строку, где подсвечивается ошибка.
- Номер строки, в которой находится ошибка, и номер символа в этой строке, где первая ошибка. В этом случае у нас есть строка 86, символ номер 3.
- Если мы посмотрим на строку 86 в нашем редакторе кода, мы найдём эту строку:
.addeventListener("click", checkGuess);
**Примечание:**См. наш TypeError: «x» не является справочной страницей функций для получения дополнительной информации об этой ошибке.
Синтаксические ошибки: второй раунд
Примечание: console.log() это часто используемая функция отладки, которая выводит значение в консоль. Поэтому она будет выводить значение lowOrHi в консоли, как только мы попытаемся установить его в строке 48.

- Сохраните и обновите страницу, и вы увидите, что ошибка исчезла.
- Теперь, если вы попробуете ввести значение и нажать кнопку «Submit guess», вы увидите . другую ошибку!
- На этот раз сообщается об ошибке: «TypeError: lowOrHi is null», в строке 78.
Примечание: Null — это специальное значение, которое означает «ничего» или «не значение». Поэтому lowOrHi был объявлен и инициализирован без значения — у него нет типа или значения.
Примечание: Эта ошибка не появилась, как только страница была загружена, потому что эта ошибка произошла внутри функции (внутри checkGuess() < . >блока). Об этом вы узнаете более подробно в нашей более поздней статье о функциях, код внутри функций выполняется в отдельной области для кода внешних функций. В этом случае код не был запущен, и ошибка не была брошена до тех пор, пока функция checkGuess() не была запущена строкой 86.
.textContent = "Last guess was too high!";
const lowOrHi = document.querySelector("lowOrHi");
.log(lowOrHi);

:
p class="lowOrHi">/p>
Примечание: Загляните на справочную страницу TypeError: «x» is (not) «y», чтобы узнать больше об этой ошибке.
Синтаксические ошибки: третий раунд
- Теперь, если вы снова попробуете сыграть в игру, вы должны добиться большего успеха — игра должна играть абсолютно нормально, пока вы не закончите игру, либо угадав нужное число, либо потеряв жизни.
- На данном этапе игра снова слетает, и выводится такая же ошибка, как и в начале — «TypeError: resetButton.addeventListener is not a function»! Однако, теперь она происходит из-за строки 94.
- Посмотрев на строку 94, легко видеть, что здесь сделана такая же ошибка. Нам просто нужно изменить addeventListener на addEventListener .
Логическая ошибка
На этом этапе игра должна проходить отлично, однако, поиграв несколько раз, вы, несомненно заметите, что случайное число, которое вы должны угадать, всегда 0 или 1. Определённо не совсем так, как мы хотим, чтобы игра была разыграна!
Безусловно, где-то в игре есть логическая ошибка — игра не возвращает ошибку, она просто работает неправильно.
-
Найдём переменную randomNumber , и строку где в первый раз устанавливали случайное число. Пример, в котором мы храним случайное число, которое должны угадать, на строке 44:
let randomNumber = Math.floor(Math.random()) + 1;
И на строке 113, где мы генерируем случайное число, каждый раз после окончания игры:
= Math.floor(Math.random()) + 1;
.log(randomNumber);
Работаем через логику
Чтобы исправить это, давайте рассмотрим как работает строка. Первое, мы вызываем Math.random() , который генерирует случайное десятичное число, между 0 и 1, например 0.5675493843.
.random();
Дальше, мы передаём результат вызова Math.random() через Math.floor() , который округляет число вниз, до ближайшего целого числа. Затем мы добавляем 1 к данному результату:
Math.floor(Math.random()) + 1;
Округление случайного десятичного числа к меньшему, всегда будет возвращать 0, так что добавление к нему единицы будет возвращать всегда 1. Нам нужно умножить случайное число на 100, прежде чем мы округлим его к меньшему. Следующая строка вернёт нам случайное число между 0 и 99:
.floor(Math.random() * 100);
поэтому нам нужно добавить 1, чтоб нам возвращалось случайное число между 1 и 100:
.floor(Math.random() * 100) + 1;
А теперь, исправьте обе строки с ошибками, затем сохраните и обновите, игра должна работать так, как мы и планировали!
Другие распространённые ошибки
Существуют и другие распространённые ошибки, которые вы обнаружите в своём коде. В этом разделе показано большинство из них.
SyntaxError: отсутствует ; перед постановкой
Эта ошибка обычно означает что вы упустили точку с запятой в конце одной из ваших строк кода, но иногда ошибка может быть более загадочной. Например, если мы изменим эту строку внутри функции checkGuess() :
var userGuess = Number(guessField.value);
var userGuess === Number(guessField.value);
Это вызовет данную ошибку, потому что браузер подумает, что вы пытались сделать что-то другое. Вы должны быть уверены, что вы не перепутали оператор присваивания ( = ), который присваивает значение переменной — с оператором сравнения ( === ), который строго сравнивает операнды, и возвращает true / false .
Примечание: Загляните на справочную страницу Синтаксическая ошибка: пропущен символ ; до объявления инструкции для получения дополнительной информации об этой ошибке.
В программе всегда говорится, что вы выиграли, независимо от того, что вы ввели
Причиной этому является все то же перепутывание оператора присваивания ( = ) со строгим сравнением ( === ). Например, если мы изменим внутри checkGuess() эту строку кода:
if (userGuess === randomNumber)
if (userGuess = randomNumber)
мы всегда будем получать true , заставляя программу сообщать, что игра была выиграна. Будьте осторожны!
SyntaxError: отсутствует ) после списка аргументов
Эта ошибка проста — обычно она означает, что вы пропустили закрывающую скобку с конца вызова функции / метода.
Примечание: Загляните на справочную страницу SyntaxError: missing ) after argument list для получения дополнительной информации об этой ошибке.
SyntaxError: missing : after property id
Эта ошибка обычно связана с неправильно сформированным объектом JavaScript, но в этом случае нам удалось получить её, изменив
function checkGuess()
function checkGuess(
Это заставило браузер думать, что мы пытаемся передать содержимое функции в функцию в качестве аргумента. Будьте осторожны с этими скобками!
SyntaxError: missing > after function body
Это легко — обычно это означает, что вы пропустили одну из ваших фигурных скобок из функции или условной структуры. Мы получили эту ошибку, удалив одну из закрывающих фигурных скобок возле нижней части функции checkGuess() .
SyntaxError: expected expression, got ‘string‘ or SyntaxError: unterminated string literal
Эти ошибки обычно означает, что вы пропустили открывающую или закрывающую кавычку для строковых значений. В первой ошибки выше, строка будет заменена на неожиданный персонаж (ей) , что браузер нашёл вместо кавычек в начале строки. Вторая ошибка означает , что строка не закончилась кавычки.
При всех этих ошибках действуйте так, как в наших примерах, которые мы рассмотрели в пошаговом руководстве. Когда возникает ошибка, посмотрите полученный номер строки, перейдите к этой строке и посмотрите, можете ли вы определить, что случилось. Имейте в виду, что ошибка не обязательно будет на этой строке, а также, что ошибка может быть вызвана не такой же проблемой, которую мы привели выше!
Примечание: : Смотрите наш SyntaxError: Неожиданный токен и SyntaxError: незавершённая строка эталонных страниц для получения более подробной информации об этих ошибках.
Резюме
Итак, мы научились основам выяснения ошибок в простых программах JavaScript. Не всегда так просто разобраться, что не так в вашем коде, но, по крайней мере, это сэкономит вам несколько часов сна и позволит вам продвигаться немного быстрее, когда что-либо заработает не так, как ожидалось, в вашем учебном путешествии.
Смотрите также
- Есть много других типов ошибок, которые не перечислены здесь; мы составляем ссылку , которая объясняет , что они означают подробно — см. ссылку ошибки JavaScript .
- Если вы столкнётесь с любыми ошибками в коде, которые вы не знаете , как исправить после прочтения этой статьи, вы можете получить помощь! Спросите на нить обучения Область дискурсе , или в #mdn IRC канал на Mozilla IRC. Расскажите нам, какая у вас ошибка, и мы постараемся вам помочь. Приложите пример своего кода для большей ясности проблемы.
- Назад
- Обзор: Первые шаги
- Далее
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
