JavaScript

[JavaScript] Invalid left-hand side expression in prefix operation, Number( ) 함수에 연산자 적용 에러

돌맹이떼굴떼굴 2025. 2. 6. 23:59

1. 문제

document.querySelector('.score').textContent = --Number(document.querySelector('.score').textContent);

score 클래스 속성의 값을 Number( ) 함수를 통해 숫자로 변환한 다음에 전위감소연산자(--)를 실행했다. 의도는 score에 있는 값을 불러와서 -1 한다음에 대입하는 것인데 에러가 발생했다.

 

Uncaught ReferenceError: Invalid left-hand side expression in prefix operation

크롬 콘솔에서 해당 에러 메세지를 띄워줬다.

 

2. 문제 원인

--Number(...) 부분이 잘못되었다.

  • --(전위 감소 연산자)는 변수 또는 속성에만 적용 가능하다.
  • Number(...)는 새로운 숫자를 반환할 뿐, 직접 변경 가능한 변수나 속성이 아니다.
  • --Number(...)는 숫자 값(리터럴)에 직접 감소 연산을 적용하려고 시도하므로, 유효하지 않은 왼쪽 표현식으로 간주되어 에러 발생.

즉, Number( )의 결과 값은 literal로 연산자를 적용할 수 있는 대상이 아니다. 

 

3. 문제 해결

let scoreElement = document.querySelector('.score'); 
let score = Number(scoreElement.textContent); // 숫자로 변환
scoreElement.textContent = --score; // 전위 감소 후 다시 저장

.textContent를 먼저 숫자로 변환한 후, 변수에 저장하고 감소한 후 다시 반영하면 된다.