독도갈매기의 개발 블로그
[JS] '=' '==' '===' 의 차이점은? 5초안에 떠오르지 않는다면 들어오세요. 본문
'='는 뭘까?
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를 뱉습니다.
대괄호안에 들어가 있는 것은 코드가 아니라 이해를 돕기 위한 설명입니다.
그리고 이러한 경우가 생기는 이유는 ==
를 사용하게 되면 강제 형변환이 일어나기 때문입니다.
강제 형변환?
강제 형변환은 a
와 b
와 c
같은 피연산자들을 공통 타입으로 만드는 행위를 말합니다.
let a = 0;
let b = '0';
if(a == b)
위 코드에서는 a
와 b
가 피연산자가 되는 것이죠==
을 사용하게 되면 피연산자끼리 데이터 타입이 같아져 값이 같으면 같은 값으로 처리 되는거죠
[Java]if(a == Integer.parseInt(b))
[JS]if(a == b)
위처럼 Java였다면 형변환을 직접 해줘야 하지만 자바스크립트에서는 강제 형변환이 이루어져
우리가 수동적으로 형변환을 하지 않아도 되는 것입니다.
오늘은 =
, ==
, ===
의 차이점을 알아봤습니다. 유익하셨다면 공유 해주시고
항상 제 블로그에서는 최대한 책처럼 정리되고 액기스만 담기 위해서 노력하고 있습니다.
이 글을 읽고 질문이 있다면 댓글로 작성해주시고 틀린 점이 있다면 알려주셨으면 좋겠습니다.
다음에도 최대한 액기스만 뽑아오겠습니다. 감사합니다.
'Javascript' 카테고리의 다른 글
[JS] 객체지향프로그래밍(OOP)의 핵심 개념 인스턴스와 객체 (0) | 2020.09.29 |
---|---|
[JS] 알아두면 좋은 JS개념 spread와 rest 전개구문 (0) | 2020.09.27 |
[JS] 프레임워크에서 많이 쓰는 JS개념 구조분해할당 (0) | 2020.09.26 |
[JS] 자바스크립트가 어려운 이유 Prototype 편 -끝- (0) | 2020.09.24 |
[JS] 자바스크립트가 어려운 이유 Prototype 편 -1- (0) | 2020.09.12 |