[모던 자바스크립트 Deep Dive] 7장 연산자

dayannne·2023년 3월 6일
0
post-thumbnail

연산자 : 하나 이상의 값으로 평가된 피연산자(표현식)을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만드는 것
피연산자 : 연산의 대상, 값으로 평가될 수 있는 표현식이어야 한다.


7.1 산술 연산자

수학적 계산을 수행해 새로운 숫자 값을 만듦.
산술 연산이 불가능한 경우 NaN을 반환

7.1.1 이항 산술 연산자

  • 2개의 피연산자를 산술 연산 + - * / %
  • 이항 산술 연산자는 부수효과(피연산자의 값을 변경)가 없다. 새로운 값을 만들 뿐이다.

7.1.2 단항 산술 연산자

  • 1개의 피연산자를 산술 연산하여 숫자 값을 만든다.
    • 증가 감소 연산자 : ++ -- , 부수효과(피연산자의 값을 변경)가 있다. (선할당/후할당)
    • 단항 연산자 + : 숫자타입 피연산자에 어떠한 효과도 없다. 숫자타입이 아닌 피연산자를 숫자 타입으로 변환한다. ('1', true, false)
    • 단항 연산자 - : 숫자타입 피연산자의 부호를 반전한 값을 반환한다. 숫자타입이 아닌 피연산자를 숫자 타입으로 변환한다. ('1', true)

7.1.3 문자열 연결 연산자

+ 연산자는 피연산자 중 하나 이상이 '문자열'인 경우 문자열 연결 연산자로 동작한다.

// 문자열 연결 연산자
'1' + 2 // -> 12
1 + '2' // -> 12

//그 외
1 + true // -> 2
1 + false // -> 1

7.2 할당 연산자

할당 연산자는 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다.

  • 변수에 값을 할당하므로 부수 효과(변수 값이 변하는)가 있다.
  • = += -= *= /= %=

7.3 비교 연산자

비교 연산자는 좌항과 우항의 피연산자를 비교한 다음의 결과를 불리언(boolean) 값으로 반환하는 연산자이다.

7.3.1 동등/일치 비교 연산자

  • ==(동등) ===(일치) !=(부동등) !==(불일치)
  • 동등 비교(==)연산자는 실제 타입이 달라도 암묵적 타입 변환 후, 같은 값일 수 있다면 true를 반환한다.
  • 일치(===) 비교 연산자는 타입도 같고 값도 같은 경우에 한해 true를 반환한다.
  • NaN === NaN // -> false
    NaN은 자신과 일치하지 않는 유일한 값이다.
    그래서 숫자가 NaN인지 조사하려면 Number.isNaN을 사용한다.
  • 0 === -0 // -> true
  • 0 == -0 // -> true
    양의 0과 음의 0의 동등/일치 비교 결과는
    모두 true가 나온다.

7.3.2 대소 관계 비교 연산자

  • > < >= <=

7.4 삼항 조건 연산자

  • '<조건식> ? 'true일 때 반환할 값' : 'false일 때 반환할 값'
  • is...else문과 달리 값으로 평가할 수 있는 표현식인 문이다.

7.5 논리 연산자

  • ||(OR) &&(AND) !(NOT)

7.6 쉼표 연산자

  • ,
    쉼표 연산자는 왼쪽 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.
var x, y, z;
x = 1, y = 2, z = 3; // --> 3

7.7 그룹 연산자

  • ( )
  • 소괄호로 피연산자를 감싸는 그룹연산자를 가장 먼저 평가한다. 그룹 연산자를 사용해 연산자의 우선순위를 조절할 수 있다.
10 * 2 + 3; // -> 23
10 * (2 + 3); // --> 50

7.8 typeof 연산자

  • typeof <피연산자>
  • string, number, boolean, undefined, symbol, object, function 중 하나를 반환한다.
  • null은 반환하지 않으며 null 값은 object로 반환된다.

7.9 지수 연산자

  • **
  • 음수의 경우 괄호로 묶어 사용한다. (
5 ** 2 // --> 25
(-5) ** 2 // --> -25

출처 : 이웅모, 『모던 자바스크립트 deep dive』, 위키북스(2020), p74-92.

profile
☁️

0개의 댓글