Ситуация: вы пишете код, который обрабатывает нажатия на клавиши для управления в игре. Вы вспоминаете, что нужно сделать отдельную функцию для проверки на попадание в цель. Для этого вы хотите сравнить текущие координаты с координатами цели — если они совпадают, то есть попадание. В результате получается такой код:
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;
}