티스토리 뷰
📕 연산자는 표현식(피연산자)을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다.
피연산자와 연산자의 조합도 값으로 평가되므로 표현식이다.
1️⃣ 산술 연산자
1. 이항 산술 연산자
피연산자 2개가 필요하며, 피연산자의 값이 바뀌지 않고 새 값을 만든다.
2. 단항 산술 연산자
피연산자 1개를 산술하며, 값을 변경하는 부수효과가 있다.
증가/감소 연산자는 위치가 중요하다.
var x = 5, result;
// 선할당 후증가
result = x++;
console.log(result, x); // 5 6
// 선증가 후할당
result = ++x;
console.log(result, x); // 7 7
3. 문자열 연결 연산자
피연산자 중 하나 이상이 문자열이면 문자열 연결 연산자(+)로 동작한다. 이를 암묵적 타입 변환, 타입 강제 변환이라고 한다.
// 문자열 연결 연산자
'1' + 2; // → '12'
1 + '2'; // → '12'
// 산술 연산자
1 + 2; // → 3
// true는 1로 타입 변환된다.
1 + true; // → 2
// false는 0으로 타입 변환된다.
1 + false; // → 1
// null은 0으로 타입 변환된다.
1 + null; // → 1
// undefined는 숫자로 타입 변환되지 않는다.
1 + undefined // → NaN
2️⃣ 할당 연산자
피연산자가 변하므로 부수효과가 있다.
할당문은 값으로 평가되므로 a = b = c = 0; 처럼 연쇄 할당할 수 있다.
3️⃣ 비교 연산자
피연산자를 비교하여 결과를 불리언 값으로 반환한다.
1. 동등/일치 비교 연산자
동등보다 일치가 더 엄격한 비교를 한다.
// 동등 비교
5 == '5'; // → true
// 일치 비교
5 === '5' // → false
Nan, 0에서의 비교는 주의해햐 한다.
// NaN은 자신과 일치하지 않는 유일한 값이다.
NaN === NaN; // → false
// 양의 0과 음의 0의 비교. 일치 비교/동등 비교 모두 결과는 true다.
0 === -0; // → true
0 == -0; // → true
2. 대소 관계 비교 연산자
4️⃣ 삼항 조건 연산자
삼항 조건 연산자의 첫번째 피연산자는 조건식이므로 if ... else 문을 사용해 유사하게 처리할 수 있다.
다른 점은 삼항 조건 연산자는 표현식이지만 if ... else 문은 표현식이 아닌 문이다. (값으로 사용할 수 있느냐의 차이!!)
5️⃣ 논리 연산자
논리 부정 연산자는 불리언 값을 반환한다. 피연산자가 반드시 불리언 값일 필요는 없다.
논리합, 논리곱 연산자 표현식의 평가 결과는 불리언 값이 아닐 수 있다.
// 단축 평가
'Cat' && 'Dog'; // → 'Dog'
6️⃣ 쉼표 연산자
왼쪽 피연산자부터 평가하고 마지막 피연산자의 평가가 끝나면 마지막 결과를 반환한다.
var x, y, z;
x = 1, y = 2, z = 3; // 3
7️⃣ 그룹 연산자
그룹 연산자(소괄호 등)은 자신의 피연산자를 가장 먼저 평가한다.
8️⃣ typeof 연산자
피연산자의 데이터 타입을 문자열로 반환한다. 7개의 데이터 타입으로 반환하며 null을 반환하는 경우는 없다.
null의 타입이 object인 것은 자바스크립트의 버그이다.. null 타입을 확인할 땐 ===연산자를 사용하자.
9️⃣ 지수 연산자
좌항을 밑으로, 우항을 지수로 거듭제곱하여 숫자 값을 반환한다.
2 ** 2; // → 4
지수 연산자 도입 이전에는 Math.pow 매서드를 사용했다.
Math.pow(2, 2); // → 4
그 외의 연산자
연산자의 부수효과
부수효과가 있는 연산자는 할당 연산자, 증가/감소 연산자, delete 연산자가 있다.
연산자 우선순위
[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] ,
'자바스크립트' 카테고리의 다른 글
06장 동적 타이핑 (0) | 2022.07.21 |
---|---|
06장 데이터 타입 (0) | 2022.07.19 |
05장 표현식과 문 (0) | 2022.07.13 |
04장 변수와 상수 (0) | 2022.07.05 |