연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 값으로 평가된 피연산자를 연산해 새로운 값을 만든다.
++, --, +, -(양수, 음수 반전)
+
단항 연산자를 사용하면 숫자 타입으로 변환한다.<부수 효과가 있는 연산자>
- ++, --, =, delete 연산자
- delete 연산자 : 객체의 프로퍼티를 없애거나 배열의 슬롯을 없애는 연산자이다. 성공하면 true 를 반환하고 실패하면 false 를 반환하거나 에러를 발생시킨다.
+
연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.1+true -> 2
1+'1' -> '11'
-> 암묵적 타입 변환 / 타입 강제 변환=, +=, -=, *=, /=, %=
==, !=
5 == '5' //true
===, !==
NaN === NaN // false
Object.is(NaN, NaN) //true
+0 === -0 // true
Object.is(+0, -0) //false
>, <, >=, <=
var result = score >= 60 ? 'pass' : 'fail'
||, && !
!
(논리 부정): 은 언제나 boolean 값을 반환한다.||(논리합), &&(논리곱)
: 은 항상 boolean값은 아니다. 언제나 2개 중 한쪽으로 평가된다. ex)'Cat' && 'Dog' -> Dog
var x,y,z;
x = 1, y = 2, z = 3 // 3
10 * (2 + 3) // 50
2 ** 2 ** 2// 16
(-5) ** 2 // 25 -> 음수를 밑으로 사용하려면 ()로 묶어야 한다.
우선순위 | 연산자 |
---|---|
1 | () |
2 | new(매개변수 존재), [](프로퍼티 접근), ()(함수 호출), ?.(옵셔널 체이닝 연산자) |
3 | new(매개변수 미존재) |
4 | x++, x-- |
5 | !x, +x, -x, ++x, --x, typeof, delete |
6 | ** (이항 연산자 중 가장 우선순위 높음) |
7 | *, /, % |
8 | +, - |
9 | <, <=, >=, >, in, instanceof |
10 | ==, !=, ===, !=== |
11 | ??(null 병합 연산자) |
12 | && |
13 | | |
14 | ? ... : ... |
15 | 할당 연산자(=, +=, -= ...) |
16 | , |
결합 순서 | 연산자 |
---|---|
좌항 ->우항 | +, -, /, %, <, <=, >=, >, ||, &&, ., [], (), ??, ?., in, instanceof |
우항 -> 좌항 | ++, --, 할당 연산자(=, +=, -= ...), !x, +x, -x, ++x, --x, typeof, delete |
<모던 자바스크립트 deepdive와, 추가 탐구한 내용을 정리한 포스트입니다.>