[JS] DeepDive - 7장

Baoro·2022년 5월 6일
0

DeepDive

목록 보기
5/9
post-thumbnail

연산자

연산자의 역할

하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산등을 수행해 하나의 값을 만든다.


1. 산술 연산자

1-1. 이항 산술 연산자

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

  • +, -, *, /, %

1-2. 단항 산술 연산자

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

  • ++, --, +, -
  • ++와 --는 피연산자의 값을 변경하는 부수효과를 가지고있다. 즉 피연산자의 값을 변경하는 암묵적인 할당이 이뤄진다.
  • 숫자 타입이 아닌 피연산자에 +단항 연산자를 사용하면 숫자 타입으로 변환하여 반환한다.
var x = '1';
console.log(+x);	// 1
console.log(x);		// "1"

var x = true;
console.log(+x);	// 1
console.log(x);		// true

var x = false;
console.log(+x);	// 0
console.log(x);		// false

var x = 'Hello';
console.log(+x);	// NaN
console.log(x);		// "Hello"
// 문자열을 숫자로 타입 변환할 수 없으므로 NaN 반환
  • -단항 연산자는 부호를 반전하고, 숫자 타입으로 변환하여 반환한다.

1-3. 문자열 연결 연산자

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

'1' + 2 = '12'
1 + '2' = '12'

2. 할당 연산자

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

var x;

x = 10;
console.log(x);	// 10

x += 5;
console.log(x);	// 15

x -= 5;
console.log(x);	// 10

x *= 5;
console.log(x);	// 50

x /= 5;
console.log(x);	// 10

x %= 10;
console.log(x);	// 0

3. 비교 연산자

좌항과 우항의 피연산자를 비교한 다음 그 결과를 불리언 값으로 반환한다.

3-1. 동등/일치 비교 연산자

  • ==, ===, !=, !==
  • 동등 비교 연산자(==)는 좌항과 우항의 피연산자를 비교할 때 암묵적으로 타입을 일치시키고 같은 값인지 비교한다.
  • 일치 비교 연산자(===)는 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우만 true를 반환한다.
  • NaN은 자신과 일치하지 않는 유일한 값이다.
NaN === NaN;	// false

3-2. 대소 관계 비교 연산자

  • <, >, >=, <=

4. 삼항 조건 연산자

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

var x = 2;
var result = x % 2 ? '홀수' : '짝수';
console.log(result); // 짝수

5. 논리 연산자


6. typeof 연산자

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

typeof ''	// "string"
typeof 1	// "number"
typeof NaN	// "nuber"
typeof true	// "boolean"
typeof undefined	// "undefined"
typeof Symbol()	// "symbol"
//주의
typeof null	// "object"	

typeof []	// "object"
typeof {}	// "object"
typeof new Date	// "object"
typeof /test/gi	// "object"
typeof funtion () {} // "object"
//선언하지 않은 변수인 경우
typeof ddddd	// undefined

7. 지수 연산자

2 ** 2; // 4
2 ** 0; // 1
3 ** 4; // 81
  • 이항 연산자 주에 우선순위가 제일 높음!

8. 그 외 연산자

연산자개요
?.옵셔널 체이닝
??null 병합연산자
delete프로퍼티 삭제
new생성자 함수를 호출할 때 사용하여 인스턴스 생성
innstanceof좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별
in프로퍼티 존재 확인

9. 부수효과가 있는 연산자

  • 할당연산자 ( == )
  • 증가/감소 연산자 ( ++ / -- )
  • delete 연산자
profile
꾸준히.... 깔끔하게.... 끝까지....

0개의 댓글