ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ JavaScript ] 자바스크립트의 연산자
    PROGRAMMING/JavaScript 2022. 5. 18. 00:29

    하루입니다.

     

     


     

    연산자

    • 산술연산자 :  + - * / %
    • 대입연산자 :  = += -= *= /= %=
    • 증감연산자 :  ++ --
    • 비교연산자 :  == === != !== > >= < <=
    • 논리연산자 :  ! && ||
    • 삼항연산자 :  조건식 ? 값1 : 값2

     

    let a = 2;
    let b = 5;
    let c = a/b;
    console.log("c의 값: ", c);           	   // 0.4가 나온다. 
    // 정수/정수 값이 실수가 나올 수 있다.
    
    let d = 5 + 6 + '안녕하세요' + 3 + 5; 	   // 11안녕하세요35
    console.log('d의 값', d);
    // + 연산자는 자바와 마찬가지로 + 연산자의 좌항이나 우항에 문자열이 있으면 이어붙이기로 동작한다.

     

    그런데 얘는 왜 형변환 됐다 안 됐다 하는지 의문

     

     

    비교 연산자 == 과 ===

    == 연산자

    • 값1 == 값2
    • 값1과 값2가 타입이 같고, 값도 같으면 true다.
    • 값1과 값2가 타입이 다르지만, 같은 타입으로 변환한 후 값이 같으면 true다.

     

     

    === 연산자

    • 값1 === 값2
    • 값1과 값2가 타입이 같고, 값도 같으면 true다.

     

    !== 연산자

    • 값1 !== 값2
    • 값1과 값2가 타입이 다르거나, 값이 다르면 true다. 

     

    let e = 5;
    console.log('e == 8', e == 8);          // f, 값도 타입도 다르다
    console.log('e == 5', e == 5);          // t, 값도 타입도 같다
    console.log('e == "5"', e == "5");      // t, 값은 같고 타입은 다르다
    
    console.log('e === 5', e === 5);        // t, 값도 타입도 같다
    console.log('e === "5"', e === "5");    // f, 값은 같고 타입은 다르다
    
    console.log('e !== 5', e !== 5);        // f, 값도 타입도 같다
    console.log('e !== "5"', e !== "5");    // t, 타입이 다르다
    console.log('e !== 8', e !== 8);        // t, 애초에 값부터 다르다

     

     

    논리연산자

    자 그럼 다음은 논리연산자. 자바에서도 배운 || && !. 특이한 점은 ||를 or처럼 사용할 수 있다는 점이다.

     

    이 사진을 보자. 급여와 커미션을 넣어야 하는데 급여만 넣었다. 급여 30000 * 커미션 undefined가 합쳐져 ... error가 아닌 NaN이 떴다.

     

    ???

     

    정말 어이가 없지 아니할 수 없다.

     

     

     

     

    이 사진을 보자. 이번에는 commision = commision||0.03; 을 추가로 줬다. || 는 좌항 우항 한쪽이라도 참이면 true를 띄우는 연산자. 커미션 값이 없을 때, commision || 0.5  --- > undefined || 0.5 --- > false || true, 즉 true인 0.5가 나올 수 있도록 한 것이다. 천재같은 생각이다.

     

     

    하지만 지금은 디폴트값 설정이 가능해졌다. 선생님이 저걸 보여주신 이유는 만약 코딩하다가 저렇게 값만 있는 || 를 보면 이런 뜻이구나 하고 알아채라고 알려 주신 듯 .

     

     

     

    참고사항

    이해가 안 가는 것. 대체 왜 에러도 null도 아닌 undefined가 뜰까?

     

    자바스크립트의 객체는 map과 비슷한 모습이다. 만약 map의 key가 a, b, c가 있다고 할 때, 내가 key d를 부르면 오류가 아닌 null을 반환한다. 마찬가지로 자바스크립트도 유사한 방식으로 undefined를 반환하는 거라고 한다.

     

    그냥 오류 반환하면 좋겠다. 디버깅하거나 오류 찾기 꽤나 힘들겠다는 생각을 했다. 

     

     


     

     

     

    잘못된 정보에 대한 지적은 언제나 환영입니다. 

     

    복습 끝!

     

     

Designed by Tistory.