Developer/자바스크립트

자바스크립트 가볍게 알아보는 == 와 === / 값의 부정평가(!)

단님 2024. 5. 16. 23:41
728x90

if (value == 0) break; 

 

== (equal) : 피연산자들의 값만 비교.

 

단, 숫자형태의 문자열다른 숫자 타입의 값과 비교시 숫자 타입으로 형변환되어 비교.

따라서 입력된 문자열 '0'과 '확인' 

버튼을 눌렀을 때 반환되는 빈 문자열 ('')은 모두 숫자 0으로 변환되어 비교.

단,원시값 중 빈 문자열('')과 false 만 추상 동등 비교(==) 시 0 으로 변환되어 평가.

숫자 형태의 문자열 숫자 형태가 아닌 모든 문자열은 복합 대입 연산자에 의해 문자열 결합 연산 처리되는 것을 확인 가능.

 

=== (strict equal) : 피연산자들의 값뿐만 아니라, 타입까지 포함하여 비교.

 

따라서 이 때에는 숫자 형태의 문자열이더라도 다른 숫자 타입과 비교시 형변환이 되지 않아 무한루프 탈출 불가.

 

입력된 값이 0 이나

입력없이 '확인' 반환되는 빈 문자열 ('')

또는 null일 때( '취소' 버튼을 눌렀을 때 )의 무한루프 탈출 처리를 위한 부정(!) 평가.

입력된 값이 숫자 형태가 아닌 문자열인 경우에도 부호 연산자(+)에 의해 NaN값 반환.

js에서는 논리 평가시 0, null, '', NaN, undefined 등의 값들을 false 값으로 평가.

 

let sum = 0;

while (true) {

  let value = +prompt("숫자를 입력하세요.");   
  if (!value) break;      
  sum += value;                                                 
}
alert('합계: ' + sum);

빈문자열, 또는 취소버튼(null)을 걸러내기 위한 부정평가(!) 사용 예시

빈문자열일때 ,취소할때 합계가 뜨며 종료되는것을 확인 가능.

 

추후에 공백문자열도 걸러내야하는 상황이 올 수 있고, 문자열인지 숫자인지 걸러야하는 상황이 올 수 있음.

걸러내기 위한 요소로 잘 알아두자.