본문 바로가기
개발자의 정보/JS & framework

Expected a conditional expression and instead saw an assignment (no-cond-assign)

by pastory 2020. 4. 12.

javascript 사용중 위와 같은 메시지를 보게 된다면 그것은 조건식이 들어가야 할 자리에 대입식을 사용했다는 이야기이다.

예를 들어 아래와 같은 코드가 있다고 해 보자. 

while(match = regex.exec(a.search)) {
  if(param != match[1]) {
    str.push(match[1] + (match[2] ? '=' + match[2] : ''));
  }
}

이 코드는 정규식의 매치되는 부분을 찾아 반복실행하게 하는 코드이다. 하지만 `while` 구문이나 `if` 구문의 경우 `a = something` 이라는 코드를 사용하면 안된다고 하는 이야기 이다. 하지만 이와 같은 코드는 예전부터 많이 사용되어 오는 코드 이기 때문에 많이 발견할 수 있는 코드이다.

이것을 고쳐서 사용하고 오류 코드가 발생하지 않도록 하려면 아래와 같이 고쳐서 사용할 수 있다.

while((match = regex.exec(a.search))) {
  if(param != match[1]) {
    str.push(match[1] + (match[2] ? '=' + match[2] : ''));
  }
}

괄호를 추가해 결과만 받도록 하는 방법으로 간단히 해결 가능하다.

댓글