독도갈매기의 개발 블로그

[JS] '=' '==' '===' 의 차이점은? 5초안에 떠오르지 않는다면 들어오세요. 본문

Javascript

[JS] '=' '==' '===' 의 차이점은? 5초안에 떠오르지 않는다면 들어오세요.

독도갈매기 2020. 8. 16. 20:21

'='는 뭘까?

var a '=' 0;
let b '=' 0;
const c '=' 0;

많은 언어들이 그렇지만 자바스크립트 또한 =는 할당의 의미를 가지고 있습니다.

자바스크립트는 C/C++, C#, Java와는 다르게 변수를 선언할 때 변수 타입을 같이 선언하지 않습니다.

그 이유는 동적언어이기 때문인데 이와 관련한 개념은 기초 개념이나 자바스크립트에서 다시 한번 다루겠습니다.

그리고 위에서 말하는 할당의 개념이 명확히 구분되지 않는다면 제 포스팅중 변수란 무엇일까?를 보고 오시는걸 추천드립니다.

그렇다면 '==', '==='는 무엇일까?

앞에서 설명했듯이 '=' 하나는 할당을 의미하고 '=='와 '==='은 비교연산자에서 사용 됩니다.

let a = 0;
let b = '0';

if(a == b) [True] [a = 0, b = '0']
if(a === b) [False] [a : 0, b : '0']

이런 것들을 보면 좀 많이 자바스크립트는 띠용!?한 상황이 많은것 같습니다.
그럼 이 상황을 설명하자면
==은 정말 값만 비교해서 True와 False를 뱉는가 하면
===은 위처럼 타입이 다르다면 값이 같더라도 False를 뱉는거죠

let c = '0';

if(b === c) [True] [b : '0', c : '0']

그리고 다시 저렇게 코드를 짜면 값도 같고 타입도 같으니 True를 뱉습니다.
대괄호안에 들어가 있는 것은 코드가 아니라 이해를 돕기 위한 설명입니다.

그리고 이러한 경우가 생기는 이유는 ==를 사용하게 되면 강제 형변환이 일어나기 때문입니다.

강제 형변환?

강제 형변환은 abc같은 피연산자들을 공통 타입으로 만드는 행위를 말합니다.

let a = 0;
let b = '0';

if(a == b)

위 코드에서는 ab가 피연산자가 되는 것이죠
==을 사용하게 되면 피연산자끼리 데이터 타입이 같아져 값이 같으면 같은 값으로 처리 되는거죠

[Java]if(a == Integer.parseInt(b))
[JS]if(a == b)

위처럼 Java였다면 형변환을 직접 해줘야 하지만 자바스크립트에서는 강제 형변환이 이루어져
우리가 수동적으로 형변환을 하지 않아도 되는 것입니다.

오늘은 =, ==, ===의 차이점을 알아봤습니다. 유익하셨다면 공유 해주시고
항상 제 블로그에서는 최대한 책처럼 정리되고 액기스만 담기 위해서 노력하고 있습니다.
이 글을 읽고 질문이 있다면 댓글로 작성해주시고 틀린 점이 있다면 알려주셨으면 좋겠습니다.
다음에도 최대한 액기스만 뽑아오겠습니다. 감사합니다.

Comments