자바스크립트의 연산자

boyeonJ·2023년 6월 19일
0

JavaScript Basic

목록 보기
5/24
post-thumbnail

연산자란 무엇인가요? 🤓

하나 이상의 표현식(=피연산자)를 대상으로 연산자를 수행하면 하나의 값을 만듭니다. 여기서 표현식(=피연산자)을 명사라고 한다면, 연산자는 동사라고 할 수 있습니다.

연산자의 종류로는 산술, 할당, 비교, 논리, 타입, 지수 연 등이 있습니다.


산술 연산자

  • 수학적 계산을 수행해 새로운 숫자 값을 만든다.
  • 불가능한 경우 NaN을 반환한다.
  • 종류로는 이항 산술 연산자와 단항 산술 연산자, 문자열 연결 연산자가 존재한다.

📌 이항 산술 연산자

  • 2개 이상의 피연산자를 산술 연산
  • 부수 효과가 없다 = 피연산자가 바뀌지 않고 새로운 값을 반환

📌 단항 산술 연산자

  • 1개의 피연산자를 산술 연산
  • 부수 효과가 있을수도 없을수도 있다.
    - 전위/중위 증가/감소 연산자 => 부수효과 O
    - +/- 산술 연산자 => 부수효과 X

📌 문자열 연결 연산자

단항 산술 연산자 중에서 + 연산자는 피연산자중에서 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.

📌 암묵적 타입 변환

단항 산술 연산자 중에서 + 연산자는 피연산자중 하나 이상이 문자열 or 숫자가 아닌 경우, 자바스크립트 엔진이 암묵적으로 타임을 자동 변환한다.

ture > 1
false > 0
null > 0
undefined > NaN (숫자로 타입 변환 안됨)


할당 연산자

  • 우항에 있는 피연산자평가 결과좌항에 있는 변수에 할당
  • 부수 효과가 있다.
  • 할당문은 표현식이다. > 할당된 값으로 평가된다.

    할당문이 표현식이기 때문에 다른 변수에 할당 할 수 있는데, 이를 활용하여 연쇄 할당을 할 수 있다.

    let a, b, c;
    a = b = c = 0;
    //a는 0 으로 평가된다.
    //b는 0 으로 평가된다.
    //c는 0 으로 평가된다.
    ``

📌 할당 연산자 종류

할당 연산자설명예시
=값 할당x = 5
+=덧셈 후 할당x += 3
-=뺄셈 후 할당x -= 3
*=곱셈 후 할당x *= 3
/=나눗셈 후 할당x /= 3
%=나머지 연산 후 할당x %= 3
**=거듭제곱 후 할당x **= 3
<<=왼쪽 시프트 후 할당x <<= 3
>>=오른쪽 시프트 후 할당x >>= 3
>>>=부호 없는 오른쪽 시프트 후 할당x >>>= 3
&=비트 AND 후 할당x &= 3
|=비트 OR 후 할당x |= 3
^=비트 XOR 후 할당x ^= 3

비교 연산자

  • 좌항과 우항을 비교한 다음 그 결과를 불리언 값으로 반환

📌 동등/일치 비교 연산자

  • 둘은 엄격도의 정도가 다르다.
    - 일치 비교 연산자는 엄격한 비교 (타입 비교)
    - 동등 비교 연산자는 느슨한 비교 (암묵적 타입 변환 비교)

    동등 비교 연산자는 편리해보이지만, 결과를 예측하기 어렵기 때문에 일치 연산자를 사용하는 것이 좋다.

  • 🚫 주의해야 할 점 두가지
    - 양의 0과 음의 0 모두 일치/동등 한다고 해석한다.
    - NaN은 유일하게 자신과 일치하지 않는 값이다. => Number.isNaN()을 사용해줘야함

    ES6에서 도입된 Object.is 메서드를 활용하면 정확한 비교 결과를 반환

📌 부동등/불일치 비교 연산자

  • 위의 개념과 반대되는 개념

📌 대소 관계 비교 연산자

연산자설명예시
>크다x > y
<작다x < y
>=크거나 같다x >= y
<=작거나 같다x <= y

삼항 조건 연산자

  • 자바스크립트의 유일한 삼항 연산자
  • if...else 처럼 사용할 수 있다.
  • 차이점은 if...else는 이고, 삼항 조건 연산자는 표현식이다.
let x = 10;
//불가능
let result = if(x%2) {result = '홀수';} else{result = '짝수';};
//가능
let result = x % 2 ? '홀수' : '짝수';

논리 연산자

  • 좌항/우항을 논리 연산한다.
  • 부수효과는 없다.
  • 반드시 피연산자가 불리언 값이 필요는 없다.

    🔎 피연산자가 불리언 값이 아닐때

    • 논리 부정은 암묵적 타입 변환
    • 논리곱, 논리합은 단축 평가
  • 논리 연산자를 간소화한 드 모르간의 법칙을 활용하면 가독성이 좋아진다.

    🔎 드 모르간의 법칙
    !(x || y) === (!x && !y)
    !(x && y) === (!x || !y)

연산자설명예시
&&논리곱 ANDx && y
||논리합 ORx || y
!논리부정 NOT!x

쉼표 연산자

  • 왼쪽 피연산자부터 차례대로 평가하고 마지막 피연산자의 평가가 끝나면 결과를 반환
  • 결국 마지막 피 연산자의 결과를 반환한다.
let x, y, z=;

x=1, y=2, z=3; //3

그룹 연산자

  • 소괄호로 감싸는 그룹을 가장 먼저 평가
  • 우선순위를 조절할 수 있음

typeof 연산자

  • 데이터의 타입을 문자열로 반환
  • string, number, boolean, undefined, symbol, object, function
  • null을 반환하는 경우는 없다. (null은 object)

    🚫 자바스크립트 버그!!
    null은 일치 연산자를 확인하여 비교

  • 선언하지 않은 연산자를 typeof로 하면 undefined 반환

지수 연산자

  • ES7에서 도입 (이전에는 Math.pow메서드를 사용)
  • 좌항은 밑, 우항 지수로 거듭 제곱하여 숫자 값을 반환
  • 음수를 밑으로 하고 싶으면 괄호로 묶어야 함
  • 우선순위가 가장 높다

typeof 연산자


0개의 댓글