1043418155752273
이병주
  • 2016.2.18 10:09
  • 조회수 286
  • 답변수 2
1043418155752273
이병주
  • 2016.2.18 10:09
  • 조회수 286
  • 답변수 2

관계연산자에서 ==와 ===의 차이 질문입니다.

자바스크립트를 혼자 공부하여 이래저래 사용은 하고 있는 개발자 라고 하기는 뭐한 사용자입니다.

제가 알고있기로 ==와 ===는 제법 큰 차이가 있는것으로 알고 있는데요

알고있는 건
1. ==는 타입과 상관없이 비교하고 ===는 타입까지 비교한다
"185.3" == 185.3 => true
"185.3" === 185.3 => false

  1. undefined와 null 의 비교 undefined == null => true undefined === null => false

이정도로 이해하고있는데 초보자 분들에게 어려운 부분이라 넘기신듯 한데 개인적으로 궁금해져서 질문드립니다.

  • #자바스크립트 입문
  • #관계연산자

2 답변

  • Gscxhpxkg5i74t30rimh
    정두식
    • 2016.2.18 19:45

    undefined와 null의 비교 말고는 딱히 알 필요가 없는것 같은데요. 지금 수준에서는 ==만 알고 넘어가는게 좋겠습니다.

  • Fgs4ppwg8ivyq5qscncw
    Los0731
    • 2016.4.9 15:58

    완전 강의 잘보고 열심히 달리는중입니다. 저도 개인적으로 궁금해져서 의견을 남겨봐요.

    =과, =====는 비슷하지만 깊게들어가면 완전 다른의미를 가지고 있는데요. 블로그나 강의를 찾아보니, 조건문을 포함해서 좀더 복잡한 내용을 공부할 때, =====가 어떻게 다른지, 왜 다르게 해 놨는지를 피부로 느낄 수 있기때문에, 처음부터 완전히 뜻을 이해하고 가려고하기보다는, '아 그냥 다른거구나'정도로 쉽게 받아들이고 넘어가라고 이야기들을 하시네요. 지금은 몰라도 전혀 문제안된다고요. (처음부터 다 이해하려고하면 머리만 아프다고..)

    여튼 ==는 Equal Operator라고 하고, ===는 Strict Equal Operator라고 한다고 합니다. strict는 엄격한 이라는 의미로 좀더 엄격하게 같은지를 보는 연산자라고 생각하면 되겠습니다.

    • =는 만약 a=b이라고 했을때, ba에 대입해서 ab이라고 약속하는 것이라고 합니다.
    • ==는 먄약 a==b이라고 했을때, ab과 '값'이 같은지를 판단해서 맞으면 true, 틀리면 false라고 합니다.
    • ===는 만약 a===b이라고 했을대, ab과 '값'과 '타입/형식?'이 정확하게 같은지를 판단해서 true/false를 표현합니다.

    .
    ===를 좀더 자세히 설명하면
    값이라는 의미는 1이라는 데이터는 역시 1이겠죠. ㅎㅎ
    형식이라는 의미는 javascript가 똑똑(?)하게도 숫자1과 문자"1"을 1이라는 데이터로 인식할 수 있기때문에, 문자와 값의 형식조차 완벽히 같아야만 true라고 판단(리턴)하게되는것이죠.

    예를들어
    1=="1"은 true이지만,
    1==="1"은 false입니다.

    또,
    nullundefined는 값이 없다는 의미의 데이터 형이라고 합니다. null은 값이 없음을 명시적으로 표시한 것이고, undefined는 그냥 값이 없는 상태이기때문에, ==로는 true가 뜨지만, ===로는 false가 리턴됩니다.

    아마도 이제 자바스크립트를 입문한사람들에게는 nullundefined까지는 좀 어려운 개념인것같아요. 이부분은 =====보다 엄격하구나 정도로 생각하고 넘어가는걸 추천합니다. 나중에 가면 이래서 이런거구나 하는 구간이 나와요. :-)

    실무 개발자들은 실무에서 코딩을 할때는 ==보다는 ===를 사용해야 한다고 강하게 추천합니다. 이유는 역시 조건문이나, 좀더 복잡한 상황의 프로그래밍에서 차이가 나온다고 하네요.

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.