JavaScript

비교

프로그래밍의 비교 기능은 이것만으로는 효용이 크지 않다. 후속 수업인 조건문에서 그 효용이 드러나기 때문에 조금 지루하더라도 조건문까지만 인내하자.

연산자

연산자란 값에 대해서 어떤 작업을 컴퓨터에게 지시하기 위한 기호인데 우리는 이미 연산자를 사용했다. 아래 예제 중에서 '='는 우항의 값인 1을 좌항의 변수 a에 대입하는 '대입 연산자'다. 본 수업은 연산자가 무엇인가에 대한 이해를 돕기 위한 것일 뿐 외울 필요는 없다. 차차로 알게 된다.

a=1

비교 연산자

프로그래밍에서 비교란 주어진 값들이 같은지, 다른지, 큰지, 작은지를 구분하는 것을 의미한다. 이 때 비교 연산자를 사용하는데 비교 연산자의 결과는 true나 false 중의 하나다. true는 비교 결과가 참이라는 의미이고, false는 거짓이라는 뜻이다. true와 false는 블린(boolean)이라고 불리는 데이터 형식인데 이것은 조건문에서 비중있게 다룰 것이다. 아래는 주요한 비교 연산자들의 종류와 그에 따른 예제들이다.

==

동등 연산자로 좌항과 우항을 비교해서 서로 값이 같다면 true 다르다면 false가 된다. '='가 두개인 것을 주의하자. '='가 하나인 것은 대입 연산자로 우항의 값을 좌항의 변수에 대입할 때 사용하는 것으로 의미가 완전히 다르다.

alert(1==2)           	//false
alert(1==1)           	//true
alert("one"=="two")   	//false 
alert("one"=="one")  	//true

===

일치 연산자로 === 좌항과 우항이 '정확'하게 같을 때 true 다르면 false가 된다. 여기서 정확하다는 말의 의미에 집중하자. 아래 예를보자.

alert(1=='1');           	//true
alert(1==='1');           	//false

위의 결과는 이상하다. '==='는 숫자 1과 문자 1을 다르게 인식한다. 반면에 '=='는 양쪽의 값을 같다고 판단한다. 바로 이것이 '정확'의 의미다. 즉 ===는 서로 같은 수를 표현하고 있더라도 데이터 형이 같은 경우에만 같다고 판단하기 때문이다. 결론부터 말하면 == 연산자 대신 === 연산자를 쓰는 것을 강력하게 권한다. 몇가지 사례를 더 살펴보자.

alert(null == undefined);       //true
alert(null === undefined);	    //false
alert(true == 1);		        //true
alert(true === 1);	        	//false
alert(true == '1');	        	//true
alert(true === '1');	    	//false

alert(0 === -0);		        //true
alert(NaN === NaN);	            //false

null과 undefined는 값이 없다는 의미의 데이터 형이다. null은 값이 없음을 명시적으로 표시한 것이고, undefined는 그냥 값이 없는 상태라고 생각하자.

NaN은 0/0과 같은 연산의 결과로 만들어지는 특수한 데이터 형인데 숫자가 아니라는 뜻이다.

!=

'!'는 부정을 의미한다. '같다'의 부정은 '같지 않다'이다. 이것을 기호로는 '!='로 표시한다. 아래의 결과는 !=의 결과인데 ==와 정반대의 결과를 보여준다.

alert(1!=2);    		//true
alert(1!=1);			//false
alert("one"!="two");	//true
alert("one"!="one");	//false

!==

'!=='는 '!='와 '=='의 관계와 같다. 정확하게 같지 않다는 의미다. 예제는 생략한다.

>

좌항이 우항보다 크다면 참, 그렇지 않다면 거짓임을 알려주는 연산자다. '<'는 반대의 의미로 언급은 생략하겠다.

alert(10>20);   //false
alert(10>1);    //true
alert(10>10);   //false

>=

좌항이 우항보다 크거나 같다. '<='는 반대의 의미로 언급은 생략하겠다.

alert(10>=20);      //false
alert(10>=1);       //true
alert(10>=10);      //true

참고

댓글

댓글 본문
작성자
비밀번호
  1. 김은경
    완료
  2. Jess
    2020.02.04
  3. 팬들을위해
    완료
  4. alert(hello);
  5. ale
  6. 2020.01.08
  7. 완료
  8. 오현주
    2019.12.10 수강
  9. 굼벵이
    완료
  10. 공부루틴
    19.11.29 完
  11. galangal
    19.11.12 완료
  12. 좋은강의 감사합니다
    19-11-11
  13. ByungHo
    19-11-10 완료
  14. 마두사랑
    11-11까지
  15. 제니
    20191017 완료!!
  16. 홍주호
    20191012 완료
  17. 박창신
    완료
  18. ㅁㄴㅇ
    완료
  19. 생코JMJ
    오늘부터 시작합니다
  20. 열심히하자
    190908
  21. ㄷㅈㅇㄴ
    190908
  22. Cussle
    190902
  23. 부아아아아아아아아아아아아아아아앙
    끝,
  24. 2019-07-30
  25. 고고
    alert ("완료"); // true
  26. 용용
    190710
  27. 카레노래
    잘 봤습니다 감사합니다^^
  28. 유하
    2019.04.13 완료
  29. 김현준
    굿굿
  30. 도토리묵
    완료
  31. 미완성
    20190108
  32. Hyun
    그냥 든 의문인데 NaN이라는 상황이 나온 조건문은 어떻게 작성하나요?
  33. choon
    감사합니다.
  34. 리젤린
    감사합니다! 잘 듣고 배워갑니다
  35. kyleon
    화요일
  36. Ra Yo
    감사합니다
  37. 감사합니다
  38. 잘보고 갑니다 감사합니다 ^^;
  39. 빙고
    오늘도 잘 보고 갑니다 ㅎㅎㅎ
  40. 권규형
    2018.03.15
  41. 철탱
    친절하게 정말 설명을 잘해주시네요 ! 이거보고 도움이 많이 될꺼같습니다
    정말 감사합니다 !
  42. 안장호
    감사합니다~! ^^
  43. 듀티프리
    좋아요. 감사합니다.
  44. 이진명
    NaN===NaN이 false인 이유는 그냥 그렇게 만들어졌기 때문입니다. ==나 ===에서 어느 한 쪽이 NaN이라면 무조건 false입니다.
    https://stackoverflow.com......lse
    를 참고하세요.
  45. https://msdn.microsoft.com.......94).aspx

    javascript의 boolean형 데이터

    boolvalue가 생략되거나 false, 0, null, NaN 또는 빈 문자열이면 부울 개체의 초기 값은 false입니다. 그렇지 않으면 초기 값은 true입니다.

    고로 강의에서 잘못 말하신듯? 합니다. 6:26쯤 말하신 게 잘못된 말 이고 0이 아닌 수를 true로 간주 한다고 하는게 맞는 소리입니다.
  46. 영상 다시 볼 필요 없이 3분이 한 말이 다 맞음
    대화보기
    • 김진홍
      감사합니다~~
    • Jupi
      -정리-

      비교(Comparison) - 둘 이상의 사물을 견주어 서로 간의 유사점, 차이점, 일반 법칙 따위를 고찰하는 일.
      연산자(Operator) - 어떤 작업을 컴퓨터에게 지시하기 위한 기호.

      -> 비교연산자(Comparison operator) 사물을 비교하도록 컴퓨터에게 지시하는 기호.

      기본으로 기준은 좌항

      = 대입연산자 (Assignment Operator) ##비교연산자아닌 연산자의 한종류##

      - 비교연산자
      == 동등연산자 (equal operator)
      === 일치연산자 (strict equal operator)
      != 부등연산자 (inequality)
      !== 불일치연산자 (strict inequality)
      > Greater than operator
      >= Greater than or equal operator
      < Less than operator
      <= Less than or equal operator

      ==,===의 차이
      만약 ==을 써 정밀하고 거대한 프로그램을 만들경우,
      데이터타입의 차이로 인해 Boolean 오류가 날수 있다.
      즉, ===을 쓰면 그런 위험을 피할 수 있다. 그냥 === 쓰자.
    • 단이
      -
    • 박인호
      12-06
      수강완료.
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기