ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] 자바스크립트 연산자(Operators) 이해하기 - 2
    프로그래밍 이야기/JavaScript 공부 2020. 4. 20. 01:35

     

     

    [JavaScript] 자바스크립트 연산자(Operators) 이해하기 - 1에서는 자바스크립트의 연산자들 중 피연산자의 개수에 따라 단항, 이항, 삼항 연산자에 대한 내용들을 정리했었다.

    오늘은 그 외에 다른 연산자들에 대한 내용들을 정리해보자.

     

    할당 연산자

    할당 연산자는 오른쪽의 피연산자 값을 왼쪽 피연산자 값에 할당한다.

    즉, 피연산자 두 개가 필요한 이항 연산자이다.

    변수에 값을 담을 때 사용했던 등호(=)가 바로 할당 연산자다.

    // 변수 선언
    let myNumber; 
    
    // 숫자 7을 변수 myNumber에 `할당`
    myNumber = 7;

    복합 할당 연산자라고 해서 +=, -=, *-, /= 등 다른 연산자들과 복합해서 약식으로 표기하는 방식이 있는데 특별히 의미가 변하진 않고 작성할 코드의 길이를 줄여주는 역할만 한다.

    이름 복합 할당 연산자  뜻
    덧셈 할당 x += y x = x + y
    뺄셈 할당 x -= y x = x - y
    곱셈 할당 x *= y x = x * y
    나눗셈 할당 x /= y x = x / y
    나머지 연산 할당 x %= y x = x % y
    지수 연산 할당 x **= y x = x ** y

     

    비교 연산자

    피연산자들을 비교하고 비교에 따라 논리 값을 반환한다.

    비교 연산자들도 역시 비교할 대상 2개가 피연산자로 필요한 이항 연산자이다.

    흔히 우리가 수학 시간에 배운 값을 비교하는 기호들이 비교 연산자로 사용된다.

    이름 기호 설명
    동등 == 피연산자들이 같으면 참을 반환
    부등 != 피연산자들이 다르면 참을 반환
    일치 === 피연산자들이 같고 피연산자들의 같은 형태인 경우 참을 반환
    불일치 !== 피연산자들이 다르거나 형태가 다른 경우 참을 반환
    ~보다 큼 > 좌항의 피연산자 보다 우항의 피연산자가 크면 참을 반환
    ~보다 크거나 같음 >= 좌변의 피연산자 보다 우항의 피연산자가 크거나 같으면 참을 반환
    ~보다 작음 < 좌항의 피연산자 보다 우항의 피연산자가 작으면 참을 반환
    ~보다 작거나 같음 <= 좌항의 피연산자 보다 우항의 피연산자가 작거나 같으면 참을 반환

    사실 기호만 봐도 직관적으로 알 수 있지만, 위 표에서 아래 4개의 비교 연산자는 설명에서도 나와 있듯 왼쪽이 기준이다.

    또한 비교연산자의 피연산자들은 숫자, 문자, 불린, 객체 값을 비교할 수 있는데,

    만약 두 피연산자가 다른 자료형일 경우, JavaScript는 일반적으로 비교를 위해서 피연산자를 적절한 형태로 자료형을 강제로 변환한다.

    이 부분이 특히 까다로운데 자료형을 변환하는 내용은 다른 페이지에 따로 정리해볼까 한다.

    아무튼, 그렇기 때문에 같은 피연산자들을 비교하더라도 동등과 일치 연산자, 부등과 불일치 연산 간의 결과가 미묘하게 달라서 사용할 때 주의를 할 필요가 있는데, 대부분의 스타일 가이드에서는 값이 서로 같은지를 비교할 때 자료형까지 비교하는 일치(===)불일치(!==) 연산을 상대적으로 더 선호한다.

     

     

    산술 연산자

    산술연산자는 숫자 값을 피연산자로 갖고, 하나의 숫자 값을 반환한다.

    기본적인 산술 연산자는 덧셈(+), 뺄셈 (-), 곱셈 (*), 나눗셈 (/)이 있다.

    이밖에도 나머지(%), 거듭제곱(**) 연산 정도가 있는데,

    일반적인 산술연산자는 피연산자 2개 사이에서 이항 연산자로도 활용되고,

    특별히 ++(증가), --(감소) 연산자는 피연산자 앞이나 뒤에 붙으면서 단항 연산자로도 활용된다.

    let x = 0;
    console.log(x); // 0
    console.log(++x); // 1   0에서 1이 더 해진 값이 출력된다.
    console.log(x); // 1     현재 x는 1이다.
    console.log(x++); // 1   증가하기 전에 값을 먼저 반환하기 때문에 1이 출력되고 1이 증가한다.
    console.log(x); // 2     다시 x를 출력해보면 현재 x는 2다.
    console.log(--x); // 1   2에서 1이 감소한 값이 출력된다.
    console.log(x); // 1     현재 x는 다시 1이다.
    console.log(x--); // 1   감소하기 전에 값을 먼저 반환하기 때문에 1이 출력되고 1이 감소된다.
    console.log(x); // 0     결국 다시 x는 0인 것이다.

    증. 감연 산자는 피연산자의 위치에 따라 반환되는 값이 다르기 때문에 오히려 처음에는 어렵게 느껴질 수도 있다. 

     

     

    논리 연산자

    논리 연산자는 보통 불린 값과 사용되는데, 양쪽 피연산자에 따라 논리적인 불린 값을 반환하는 연산자로

    &&(논리AND), ||(논리 OR), !(논리 NOT) 3가지가 있다. 각각의 의미는

    &&(이항 연산자): 양쪽 값이 모두 true일 경우 true를 반환

    ||(이항 연산자): 양쪽 값이 모두 false일 경우 false를 반환

    !(단항 연산자): 피연산자의 반대 값을 반환

    let x = 3
    let y = 4
    console.log((x < y) && (x * 2 == y)); // false
    console.log((x > y) || (x * y <= 20)); // true
    console.log(!(x < y)); // false

    그러나 피연산자가 불린 형 값이 아닐 경우에는 다른 형태의 값을 반환할 수도 있다.

    &&: 좌항을 참으로 판단할 수 있는 경우 우항을 반환, 그렇지 않을 경우 좌항을 반환한다.

    ||: 좌항을 참으로 판단할 수 있는 경우 좌항을 반환, 그렇지 않을 경우 우항을 반환한다.

    !: 피연산자를 참으로 판단할 수 있는 경우 false를 반환, 그렇지 않을 경우 true를 반환.

    // 논리AND
    console.log("강아지" && "고양이"); // 고양이
    console.log("고양이" && false);  // false
    console.log(false && "고양이");  // false
    console.log(null && "고양이");  // null
    console.log(undefined && "고양이");  // undefined
    
    // 논리OR
    console.log("강아지" && "고양이"); // 강아지
    console.log("고양이" || false);  // 고양이
    console.log(false || "고양이");  // 고양이
    console.log(null || "고양이");  // 고양이
    console.log(undefined || "고양이");  // 고양이
    
    // 논리NOT
    console.log(!"강아지"); // false
    console.log(!null); // true
    console.log(!undefined); // true

     

    문자열 연산자

    마지막으로 문자열 연산자는 산술 연산자에서도 본 + (덧셈기호)이다.

    일반적으로 문자열 연산자는 두 개의 문자열 값을 피연산자 받고(이항 연산자

    두 문자열이 합쳐진 새로운 문자열을 반환한다. 

    두 문자열 값을 연결한다고 해서 연결 연산자라고도 부른다.

    추가적으로 문자열 값이 할당된 변수를 이용하면 복합 할당 연산자 +=로도 문자열을 연결할 수 있다.

    // 연결 연산자
    console.log("Big" + "Top"); // BigTop
    
    // 복합 할당 연산자
    let x = "Big";
    console.log(x += "Top"); // BigTop

     

     

    댓글

Designed by BigTop.