Что означает ошибка ReferenceError: Invalid left-hand side in assignment

Скорее всего, вы используете оператор присваивания вместо сравнения.

Что означает ошибка ReferenceError: Invalid left-hand side in assignment

Ситуация: вы пишете код, который обрабатывает нажатия на клавиши для управления в игре. Вы вспоминаете, что нужно сделать отдельную функцию для проверки на попадание в цель. Для этого вы хотите сравнить текущие координаты с координатами цели — если они совпадают, то есть попадание. В результате получается такой код:

function collision () {
if(x = target.x && y = target.y) {
alert(«Столкновение!»);
}
};

Но при запуске игра падает с ошибкой:

❌ ReferenceError: Invalid left-hand side in assignment

Что случилось: браузер видит условный оператор if и хочет выполнить сравнения в скобках. Если равенство выполняется, то условие истинно и можно выполнить команду вывода на экран. Но вместо сравнения браузер встречает оператор присваивания, понимает, что ему тут не место, и останавливает программу.

Чтобы ошибки не было, нужно использовать не один знак равенства, а два. Один — присваивание, два — сравнение:

function collision () {
if(x == target.x && y == target.y) {
alert(«Столкновение!»);
}
};

Когда встречается: когда мы делаем что-то не то с левой частью выражения — присваиваем вместо сравнения или перенаправляем вывод в переменную, которая не предназначена для такого. Ещё такая ошибка бывает, когда что-то пытаются присвоить ключевому слову this — оно хоть и похоже на переменную по поведению, но присваивать ему новое значение так нельзя.

Как исправить ошибку ReferenceError: Invalid left-hand side in assignment

Скорее всего, вы используете присваивание вместо сравнения. Это частая ошибка у новичков, потому что в математике знак «=» означает именно равенство.

Если дело не в этом, то вот вопросы, которые помогут вам с поиском ошибки:

  • можно ли вообще делать с этой переменной то, что вы делаете;
  • нужен ли отдельный модуль или компонент для выполнения этой команды и подключён ли он;
  • правильно ли вы используете эту команду или оператор — на всякий случай уточните и загляните в справочник.

Попробуйте сами

if (Math.PI = 3 || Math.PI = 4) { 
  console.log('Потрачено!');
}
var str = 'Привет, '
+= 'это журнал '
+= 'Код!';

Задание со звёздочкой: есть такой фрагмент кода на странице

<input type=»text» id=»number»><br>

Enter exponent:<br>

<input type=»text» id=»degree»><br><br><br>

<button id=»button»>Result</button>

<input type=»text» id=»result»>

И есть такой скрипт, который при нажатии на кнопку падает с нашей ошибкой:

var button = document.getElementById('button');
button.addEventListener('click', math);
 
function math(a,b){
    var a = document.getElementById('number').value;
    var b = document.getElementById('degree').value;
    var result = Math.pow(a,b);
    document.getElementById('result') = result;
}



Художник

Даня Берковский


Корректор

Ирина Михеева


Вёрстка

Мария Дронова


Соцсети

Олег Вешкурцев

Через год — лучше работа, выше зарплата
В «Яндекс Практикуме» становятся разработчиками с нуля. Выберите язык — веб, Python, Java, C++ — и учитесь. Джуны зарабатывают от 80 000 ₽, мидлы — от 150 000 ₽. Дальше — программы трудоустройства и компенсация, если пойдёте в Яндекс.
Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата
Вам может быть интересно
Uncaught SyntaxError: missing ) after argument list — что это значит
Uncaught SyntaxError: missing ) after argument list — что это значит

Потрясающе хитрая ошибка.

hard
Uncaught TypeError: Cannot read property — что это означает
Uncaught TypeError: Cannot read property — что это означает

Нельзя прочитать то, чего нет.

medium
Uncaught SyntaxError: Unexpected identifier — что это означает?
Uncaught SyntaxError: Unexpected identifier — что это означает?

Вредная ошибка, которую легко исправить.

medium
Работаем с биг-датой: визуализируем данные на Python
Работаем с биг-датой: визуализируем данные на Python

Обрабатываем 4 миллиона строк данных

hard
Делаем Шар судьбы на CSS
Делаем Шар судьбы на CSS

Получаем ответы на все вопросы

medium
Решаем задачу коммивояжёра простым перебором
Решаем задачу коммивояжёра простым перебором

Простое решение, но много кода.

easy
Делаем свой удалённый доступ к компьютеру
Делаем свой удалённый доступ к компьютеру

Ставим RustDesk на компьютер и сервер

medium
Ставим Invoke AI — сразу 12 нейросетей для работы с картинками с удобным веб-интерфейсом
Ставим Invoke AI — сразу 12 нейросетей для работы с картинками с удобным веб-интерфейсом

Поднимите мне сети

hard
Подсвечиваем манипуляции и пропаганду на любом сайте
Подсвечиваем манипуляции и пропаганду на любом сайте

Береги свой ум.

easy
easy