본문 바로가기

Javascript

JavaScript ==, === 차이점

 자바스크립트에서는 특이하게도 비교연산자가 == 이외에도 ===도 존재한다. 다른 비교 연산자들, 예를 들어 !=도 마찬가지로 !==의 방식으로 사용되어지는데, 이는 자바스크립트의 특이한 비교 방식때문에 생겨난 것 같다.

 자바스크립트는 == 을 사용할 경우 그 값만은 비교한다. 이게 무슨 말이냐면, string과 number과 같은 타입의 구분을 두지 않는다는 것이다. 

 

if(1 == "1") {

  alert('true');

} else {

  alert('false');

 

 위의 코드를 자바스크립트로 실행해본다면 true로 작동한다. 즉 자바스크립트에서 ==을 사용한다면 문자열 1과 숫자 1을 같은 값으로 비교할 수 있다는 것.

 

 이와는 다르게 ===같은 경우는 타입의 차이점까지 비교해서 판단한다. 아래의 코드를 자바스크립트로 실행해보자.

 

if(1 === "1") {

  alert('true');

} else {

  alert('false');

 

 결과값으로 false가 나온다는 것을 알 수 있다. 비교하는 둘 간의 타입이 다르기 때문이다. 같은 비교연산자이긴 하지만 이런 타입비교 때문에 연산자를 세 개 사용하는 경우에 strict(엄격한)을 붙여서 엄격한 비교연산자라고 한다. 실제 업무를 해보다보니, 확실히 엄격한 비교연산자를 사용하는게 더 안전한 코드를 사용할 수 있다는 확신이 든다.