[modern JS Deep Dive] - 7장 . 연산자

유선향·2025년 1월 18일
0

<modern_JS_Deep_Dive>

목록 보기
8/44

연산자와 피연산자

연산자

  • 하나 이상의 표현식을 대상으로 산술, 할당, 비교 등을 수행해 하나의 값을 만든다.
    • 피연산자 : 연산의 대상
    • 피연산자는 값으로 평가 될 수 있는 표현식 이여야 한다.
    • 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가 될 수 있는 표현식이다.

연산자의 종류

산술 연산자

  • 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다.

  • 산술 연산이 불가능할 경우, NaN을 반환

  • 이항 산술 연산자

    • 피연산자의 값을 변경하는 부수 효과가 없다.
    • 어떤 산술 연산을 해도 피연산자의 값이 바뀌는 경우는 없고 언제나 새로운 값을 만들 뿐이다.
  • 단항 산술 연산자

    • 1개의 피연산자를 산술 연산하여 숫자 값을 만든다.

    • ++, — 연산자는 피연산자의 값을 변경하는 부수효과가 있다 즉, 암묵적 할당이 이뤄진다.

    • ++, — 는 위치에 의미가 있다.

문자열 연결 연산자

  • 피연산자 중 하나이상이 문자열인 경우 문자열 연결 연산자로 동작하고, 그 이외의 경우에는 산술 연잔자로 동작한다.
  • 암묵적 타입 변환, 또는 타입 강제 변환 이 일어난다.

할당 연산자

  • 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다. 할당 연산자는 좌항의 변수에 값을 할당하므로 변수 값이 변하는 부수 효과가 있다.
  • 할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가된다.
let x
console.log(x=10) // 10 

let a,b,c
a=b=c=0 //셋다 0됨

비교 연산자

  • 좌항과 우항의 피연산자를 비교한 다음 그 결과를 불리언 값으로 반환한다.
  • 동등 비교 연산자
    • 느슨한 비교
    • 좌항과 우항의 피연산자를 비교할 때 암묵적 타입 변환을 통해 타입을 일치시킨후 같은 값인지 비교한다.
  • 일치 비교 연산자
    • 엄격한 비교
    • 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에 한하여 true 를 반환한다.

  • NaN
    • NaN 은 자신과 일치하지 않는 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 Number.isNaN을 사용한다.

삼항 조건 연산자

  • 자바스크립트의 유일한 삼항 연산자, 부수효과는 없다.
  • if … else 문과의 차이
    • if … else 문은 표현식이 아닌 문이다. 따라서 if …else 문은 값처럼 사용할 수 없다.
  • 삼항 조건 연산자 표현식은 값으로 평가 할 수 있는 표현식인 문이다.

논리 연산자

  • 우항과 좌항의 피연산자를 논리 연산한다.
  • 논리 부정 연산자는 언제나 불리언 값을 반환한다.

쉼표 연산자

  • 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.
let x,y,z
x=1, y=2, z=3 //3 

typeof 연산자

  • 피연산자의 데이터 타입을 문자열로 반환한다.

지수 연산자

  • ES7에서 도입된 지수 연산자는 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭 제곱하여 숫자 값을 반환한다.

그 외의 연산자

  • ?. ,?? ,delete ,new ,instanceof , in …

연산자의 부수 효과

  • 대부분의 연산자는 다른 코드에 영향을 주지 않지만, 일부 연산자는 다른 코드에 영향을 주는 부수효과가 있다.
  • 할당연산자 (=) , 증가/감소 연산자(++/—), delete 연산자 등이다.

연산자 우선순위

연산자의 우선순위

  • 여러 개의 연산자로 이뤄진 문이 실행될 때 연산자가 실행되는 순서를 말한다

연산자 결합 순서

  • 연산자의 어느쪽 부터 평가를 수행할 것이지를 나타내는 순서

0개의 댓글