언어/JavaScript

[자바스크립트 딥다이브] 7장 연산자

홍시_코딩기록 2024. 4. 1. 23:54

연산자

표현식을 대상으로 산술, 비교 등을 수행해 하나의 값을 만듦.

이 때 연산의 대상을 피연산자라 함.

피연산자는 값으로 평가될 수 있는 표현식

 

1. 산술 연산자

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

산술이 불가능한 경우 NaN을 반환

 

이항 산술 연산자

: 어떤 산술 연산을 해도 피연산자의 값이 바뀌는 경우는 없고 언제나 새로운 값을 만든다.

5 + 2;
5 - 2;
5 * 2;
5 / 2;
5 % 2;

 

단항 산술 연산자

: 1개의 피연산자를 산술 연산하여 숫자 값을 만듦.

++, -- → 피연산자의 값을 변경하는 부수 효과가 있음. (위치에 따라 의미가 다름)

+, - → 부수효과 없음.

var x = 5, result;

result = x++;  console.log(result, x); // 5 6 선할당 후증가
result = ++x;  console.log(result, x); // 7 7 선증가 후할당
result = x--;  console.log(result, x); // 7 6 선할당 후감소
result = --x;  console.log(result, x); // 5 5 선감소 후할당

 

문자열 연결 연산자

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

암묵적 타입 변환, 타입 강제변환이라고 함.

'1' + 2; //'12'
1 + true; // 2  -> true는 1로 타입 변환
1 - false; // 1 -> false는 0으로 타입 변환
1 - null; // 1 -> null은 0으로 타입 변환

 

2. 할당 연산자

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

할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가된다.

 

동등/일치 비교연산자

동등: 느슨한 비교 ==

일치: 엄격한 비교 ===

 

❗ 예외

NaN === NaN; // -> false
0 === -0; //true

- NaN은 자신과 일치하지 않는 유일한 값, 숫자가 NaN인지 확인하려면 isNaN을 사용하기

- 양수 0과 음수 0도 true라고 반환함. Object.is(-0, 0) 메서드를 사용해서 검사해야함.

 

 

4. 삼항 조건 연산자

: if …else 문은 표현식이 아님. 값처럼 사용할 수 없음.

삼항연산자는 값으로 평가 됨.

//형식
조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false일 때

//예시
var result = score >= 60 ? 'pass' : 'fail'

 

논리 연산자

: || 논리합, && 논리곱, ! 부정

 

쉼표 연산자

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

: 마지막 피연산자의 평가 결과를 반환

 

그룹 연산자

: 소괄호 ( ) 그룹 연산자는 연산자 우선순위가 가장 높음.

 

typeof 연산자

: 피연산자의 데이터 타입을 문자열로 반환

typeof '' // "string"
typeof 1 // "number"
typeof NaN // "number"
.....

// 버그
typeof null // "object"

typeof null을 하면 null이 아닌 object를 반환함.

값이 null 타입인지 확인할 때는 일치 연산자(===)를 사용하기.

 

지수연산자

: es7에서 도입됨. 거듭제곱

지수연산자가 도입되기 전에는 Math.pow 메서드를 사용했었음.

2 ** 2; // 4
(-5) ** 2; //25
2 ** ( 3 ** 2 ); //512