Что означает ошибка 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
datetime в Python: как работать с датой, временем и timedelta
datetime в Python: как работать с датой, временем и timedelta

print(“Минут пять десять пятого утра”)

easy
Как создать HTML-файл: пошаговая инструкция для начинающих
Как создать HTML-файл: пошаговая инструкция для начинающих

Разбираемся с тегами и расширениями

easy
Ollama: запускаем нейросеть локально без облака и подписок
Ollama: запускаем нейросеть локально без облака и подписок

Запускаем нейросеть на своём компьютере с Ollama: установка, выбор модели под железо, интерфейс без терминала

easy
Функция parseInt() в JavaScript: руководство по преобразованию строк в числа
Функция parseInt() в JavaScript: руководство по преобразованию строк в числа

Извлекаем нужные данные для работы

easy
5 красивых визуализаций для анализа данных
5 красивых визуализаций для анализа данных

Показываем информацию в понятном виде

easy
Что означает ошибка SyntaxError: Identifier has already been declared
Что означает ошибка SyntaxError: Identifier has already been declared

Это когда мы второй раз пытаемся объявить одну и ту же переменную, но есть нюансы

easy
easy