ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] 자바스크립트, 연산자 정리 (산술/할당/비교/논리 연산자)
    Frontend 2019. 4. 11. 23:23

    1. 기초 산술연산자

    분류 연산자 이름 기호 설명
    사칙 연산자 더하기 + 두 값을 더한다.
    빼기 - 앞의 값에서 뒤의 값을 뺀다.
    곱하기 * 두 값을 곱한다.
    나누기 / 앞의 값을 뒤의 값으로 나눈다.
    나머지 연산자 나머지 % 앞의 값을 뒤의 값으로 나눈 나머지 값
    증감 연산자 증가 ++ 변수의 값을 1 증가
    감소 -- 변수의 값을 1 감소

     

    # 증감연산자의 위치

    • 증감연산자가 피연산자 에 위치
      1. ex) ++a
      2. 전체 수식 처리하기 전에 적용됨
    • 증감연산자가 피연산자 에 위치
      1. ex) a++
      2. 전체 수식의 처리가 끝난 뒤 적용됨
    var a = 10;
    var b = a++ + 5;
    
    console.log(a, b);	// a = 11, b = 15가 출력됨
    
    var a = 10;
    var b = ++a + 5;
    
    console.log(a, b);	// a = 11, b = 16이 출력됨

    첫번째 경우는 b = a++ + 5 에서 ++가 a 뒤에 위치하니까 a+5를 먼저 계산해서 b에 15를 할당한다.

    그리고 다음줄로 넘어가면서 a++가 계산되어 a = 11, b = 15가 출력된다.

     

    두번째 경우는 ++a를 만나자마자 바로 a = 11이 된다. 

    그렇기 때문에 ++a + 5 = 11 + 5 = 16이 되어 b = 16이 된다.

     

     

    2. 할당 연산자 응용

    할당 연산자 응용 의미
    += y += x y = y + x
    -= y -= x y = y - x
    *= y *= x y = y * x
    /= y /= x y = y / x
    %= y %= x y = y % x

     

     

    3. String type과 Number type의 연산

    # 더하기

    number타입의 숫자와 string타입의 숫자를 더하는 경우

    무조건 string타입이 우선하여 연산된다.

    즉, 문자열처럼 결합되고 string으로 출력된다.

    var a = 500;
    var b = "200";
    
    console.log(a+b);	// "500200" 출력

     

    # 빼기 / 곱하기 / 나누기

    빼기, 곱하기, 나누기 연산에서는 string타입의 숫자도

    number타입인 것 처럼 연산이 된다.

    그치만 헷갈려서 오류가 발생할 수 있으므로 

    되도록이면 숫자 타입으로 변환해서 연산하도록 한다.

    var a = 500;
    var b = "200";
    
    console.log(a-b);	// 300 출력
    console.log(a*b);	// 100000 출력
    console.log(a/b);	// 2.5 출력

     

     

    4. 비교연산자

    비교연산자 설명
    x == y x와 y의 값이 같다
    x === y x와 y의 값과 타입(type)이 같다
    x != y x와 y의 값이 다르다
    x !== y x와 y의 값이나 타입(type)이 다르다
    x > y x의 값이 y의 값보다 크다
    x >= y x의 값이 y의 값보다 크거나 같다
    x < y x의 값이 y의 값보다 작다
    x <= y x의 값이 y의 값보다 작거나 같다

     

    5. 논리 연산자

    # OR 연산자 (기호: || )

    • 왼쪽과 오른쪽 중 하나라도 참이면 모두 true
    • 왼쪽과 오른쪽 모두 거짓일 때 false

     

    # AND 연산자 (기호: && )

    • 왼쪽과 오른쪽 중 하나라도 거짓이면 모두 false
    • 왼쪽과 오른쪽 모두 참이어야 true

     

    # NOT 연산자 (기호: ! )

    • true나 false를 반대로 뒤집는다

     

     

    # 논리 연산자의 쇼트 서킷:

    • OR 연산자를 사용하여 조건식을 세웠을 경우, 왼쪽 항이 참이면 오른쪽 항을 검사하지 않고 true가 된다.
    • AND 연산자를 사용하여 조건식을 세웠을 경우, 왼쪽 항이 거짓이면 오른쪽 항을 검사하지 않고 false가 된다.
    var a = 1;
    var b = 2;
    var c = 3;
    
    if (a == 1 || c == ++b) {
        console.log('둘 중에 하나는 참', b)    // b => 2 출력
    } else {
        console.log('둘 다 거짓', b)
    }
    
    if (c == ++b && c == b++) {
        console.log('둘 다 참', b)    // b => 4 출력
    } else {
        console.log('둘 중에 하나는 거짓', b)
    }

    (첫 번째 if문 연산과정)

    1. a == 1 → true임을 판별한다.
    2. OR연산이므로 둘 중에 하나만 true이면 true이다. 즉, 오른쪽 c == ++b는 연산하지 않고 true로 빠진다.
    3. console에 둘 중에 하나는 참 2 가 출력된다. (++b가 연산되지 않았으므로)

    (두 번째 if문 연산과정)

    1. ++b를 만나는 순간 b = 3이 된다. c == ++b는 true가 된다.
    2. AND 연산이므로 두 항이 모두 참이어야 참이 된다. 그러므로 오른쪽 조건도 판별해야한다.
    3. c == b++에서 ++는 b의 뒤에 있으므로 나중에 연산된다. c == 3이므로 true가 된다.
    4. 위에서 조건 판별을 하고 아래로 내려오는 순간 b++가 계산되어 b = 4가 된다.
    5. console에 둘 다 참 4 가 출력된다.

     

    6. 연산자 계산 순서

    단항 연산자( !, ++, --) → 산술 연산자 → 비교 연산자 → 논리 연산자 → 할당 연산자

    반응형

    COMMENT