Что означает ошибка ReferenceError: Can't find variable
easy

Что означает ошибка ReferenceError: Can't find variable

Ошибка в JavaScript: что она значит и что делать

Ситуация: нам нужно быстро дописать код, но не хватает одной функции. Мы не знаем, как её быстро реализовать, поэтому идём за ней в интернет — и находим:

// складываем два числа, которые на самом деле — строки; возвращаем строку
function plus(a,b) {
// тут будет результат
    var result = '';
    // переводим строки в числа
    x = parseInt(a);
    y = parseInt(b);
    // получаем результат
    result += x + y;
    // и возвращаем ответ в виде строки
    return(String(result));
}

console.log(plus(x,y));

Внешне вроде всё хорошо, но при запуске компьютер выдаёт ошибку:

❌ReferenceError: Can't find variable: x

Откуда ошибка, ведь все переменные у нас есть?

Что это значит: JavaScript встретил переменную, которую ему сказали использовать, но он не знает, где её брать. В нашем случае это происходит в последней строке: console.log(plus(x,y)); — мы сказали «выведи в консоль результат сложения X и Y», но не сказали, что это за икс и игрек. 

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

Что делать с ошибкой ReferenceError: Can't find variable

Чтобы исправить ошибку, нужно определить переменную до того, как вы её начн`те использовать. Например: 

let x = '11';
let y = '12';
console.log(plus(x,y));

 Если хотите, можно спросить значение у пользователя (коряво, но мы так иногда делаем):

let x = prompt("Введите первое число");
let y = prompt("Введите второе число");
console.log(plus(x,y));

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

А ещё можно просто не использовать переменные, пока они не понадобятся. По сути, в нашем коде выше не было никакой необходимости выводить сумму чисел сразу после определения функции. Можно убрать последнюю строку с console.log() и жить спокойно. 

Где ещё

Иногда такая ошибка возникает при использовании специальных библиотечных функций в браузере или без предварительного импорта. Например, команда const axios = require("axios"); при запуске в браузере тоже выдаст ошибку, потому что эта команда предполагает запуск в среде Node.js, а не в браузере.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy