Dev-dotoli TIL

JS 8 연산자




연산자

demo4.html


연산자: 어떤 작업을 컴퓨터에게 지시하기 위한 기호

a = 1;
//a:변수 / =:대입연산자 / 1: 상수



비교연산자


비교: 주어진 값들이 같은지, 다른지, 큰지, 작은지 등 구분하는 것 결과는 true, false (=boolean, bool)

  • boolean: 조지 불의 이름에서 따온 자료형, 대수 논리, 네트워크, 함수 등



동등 연산자 “==” (equal operator)

:좌항과 우항을 비교해서 서로 값이 같다면 true / false

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


일치 연산자 “===” (strict equal operator)

:좌항 우항이 ‘정확하게’ 같을 때 true / false

//숫자1과 문자'1'은 데이터형태가 다름
alert(1 == "1"); //ture

//===는 엄격하게 비교해서 데이터형식(datatype)까지 같아야함
alert(1 === "1"); //false


- 결론:
‘==’대신 ‘===’를 쓰는것을 강력하게 권함
프로그램이 커지는 과정에서 비슷하면 같은 것으로
간주하는 형식의 연산은 버그를 발생기키기 쉬움


  • null: ‘값이 없음’을 명시적으로 표현
    :의도적으로 값이 없는 상태를 부여함

  • undefined: 값이 정의되지 않음
    :그냥 값이 없음(의도x)

    var a;
    alert(a); //undefined
    var a = null;
    alert(a); //null
    //null: 독일어 0
    
    alert(undefined == null); //true
    alert(undefined === null); //false
    //값이 없는 것은 같지만, datatyped은 '정의되고/되지않음'으로 다름
    


  • Boolean: true / false 라는 것은 datatype의 하나임
    • Number: -1, 0, 1, 2
    • string: ‘a’, ‘b’, ‘c’
    • boolean(bool): true, false
    • null, undefined도 다 각각의 타입
//JS에서는: 숫자 1 을 true로 간주함 / 1 이외의 수는 false로 간주함
alert(true); //ture
alert(true == 1); //true
alert(true == 2); //false
alert(true == 3); //false

//but === 로 데이터 형식을 비교해보면
alert(true === 1); //false

//문자 '1'과 true(1)는 역시 같지만
alert(true == "1"); //true

//문자 '1'과 true의 datatype은 다르다
alert(true === "1"); //false

//0은 -가 붙어도 0이잖아? true
alert(0 === -0); //true

//0을 0으로 나누는 계산은 성립하지 않음. 이는 NaN이라는 datatype을 가짐
alert(0 / 0); //NaN (성립하지않음)
alert(NaN === NaN); //false
//둘다 NaN일지라도 false. 특징적이므로 알아둘 것(볼일은 잘 없음)
//NaN: Not a number


부정
!=: ==의 부정형 / ‘같다’의 부정은 ‘같지 않다’
==과 결과가 역전

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


!==: ===의 부정형


”>” : 좌항이 우항보다 크다면 true
“<” : 우상이 좌항보다 크다면 true
“>=”: 좌항이 우항보다 크거나 같다면 true
“<=”: 우항이 좌항보다 크거나 같다면 true


잘 숙지하고 넘어가라
오늘 배운 비교연산자는 다음에 배울 조건문의 전초전임