- 피연산자는 값으로 평가될 수 있는 표현식이어야 한다.
- 피연산자를 연산하여 새로운 값을 만드는 동사 역활.
1. 산술연산자
- 산술연산이 불가능한 경우 NaN을 반환.
1.1 이항 산술 연산자
- 2개의 피연산자를 산술 연산해 숫자 값을 만든다.
- 피연산자의 값을 변경하는 효과는 없다.
1.2 단항 산술 연산자 (++, --, +, -)
- 1개의 피연산자를 연산해 숫자 값을 만든다.
- 피연산자의 값을 변환하는 부수효과가 있다.
1.3 문자열 연결 연산자 (+)
- 피연산자중 하나 이상이 문자열인 경우 문자열을 이어준다.
- true/false, null 등은 강제로 타입이 바뀐다(문자열 형식의 1또는 0 )
2. 할당 연산자
- 우항에 있는 피연산자의 평가 결과를 좌항의 변수에 할당한다.
- = , +=, -=, *=, /=, %=
- 할당문은 표현식인 문이다.
3. 비교 연산자
3.1 동등/일치 비교 연산자
- 좌항과 우항의 피연산자가 같은 값으로 평가되는지를 불리언으로 반환.
- ==, ===, !=, !==
- 동등 비교 연산자는 암묵적 타입 변환을 통해 타입을 일치시킨 후 값을 비교한다.
- NaN은 자신과 일치하지 않는 유일한 값이다.
- NaN을 조사하려면 isNaN함수를 사용해야 한다.
3.2 대소 관계 비교 연산자
- >, <, >=, <=
4. 삼항 조건 연산자
- 조건식 ? 조건식이 true시 반환할 값 : 조건식이 false일 때 반환할 값 (ex. var result = score >=60 ? 'pass' : 'fail')
- 삼항연산자는 값으로 사용할 수 있지만 if else문은 값으로 사용할 수 없다(표현식이 아닌 문이기 때문)
5. 논리 연산자
- || OR, && AND, ! NOT
- 'Cat' && 'Dog' ==> //Dog 단축평가
6. 쉼표 연산자
- 왼쪽 피연산자부터 차례대로 피연산자를 평가하고, 마지막의 피연산자의 평가가 끝나면 마지막 피연산자의 결과를 반환한다.
- x = 1, y = 2, z = 3;
7. 그룹 연산자
- 소괄호()로 피연산자를 감싸면, 그룹안의 표현식을 가장 먼저 평가한다.
- 연산자 우선순위가 가장 높다
8. typeof 연산자
- 피연산자의 데이터 타입을 문자열로 반환한다.
- '' -> "string"
- 1 -> "number"
- NaN -> "number"
- true -> "boolean"
- undefined -> "undefined"
- Symbol() -> "symbol"
- null -> "object" //버그이지만 기존 코드에 영향을 줄 수 있기 때문에 수정되지 못하고 있다.
- /test/gi -> "object"
- function(){} -> "function"
9. 지수 연산자
- **
- 좌항을 밑으로 우항을 지수로 거듭제곱해 숫자 값을 반환한다.
- 음수를 거듭제곱 하려면 괄호로 묶어야 한다.
- 이항 연산자 중에서 우선순위가 가장 높다.
10. 그 외의 연산자
- ?. : 옵셔널 체이닝 연산자
- ?? : null 병합 연산자
- delete : 프로퍼티 삭제
- new : 생성자 함수를 호출 할 때 사용하여 인스턴스를 생성
- instanceof : 좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별
- in 프로퍼티 존재 확인
11. 연산자의 부수 효과
- 대부분 연산자는 다른 코드에 영향을 주지 않지만 부수효과가 있는 연산자는 할당연산자, 증감연산자, delte연산자이다.
12. 연산자 우선순위
1. ()
2. new(매개변수 존재), [], (), ?.
3. new(매개변수 미존재)
4. x++, x--
5. !x, +x, -x, --x, ++,x typeof, delete
6. **
7. *, /, &
8. +,-
9. <, , >, >=, in, instanceof
10. ==, !=, ===, !==
11. ??
12. &&
13. ||
14. ?, ..., : ...
15. 할당 연산자
16, ,
'JS > [책] 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
9. 타입 변환과 단축 평가 (0) | 2021.08.19 |
---|---|
8. 제어문 (0) | 2021.08.18 |
6. 데이터 타입 (0) | 2021.08.17 |
5. 표현식과 문 (0) | 2021.08.17 |
4. 변수 (0) | 2021.08.16 |