연산자
- 하나 이상의 표현식을 대상으로 하나의 값을 만듦.
- 피연산자는 값으로 평가될 수 있는 표현식
7.1 산술 연산자
1. 이항 산술 연산자
- 2개의 피연산자 연산
- 부수효과 X
-
-
-
- / %
-
-
2. 단항 산술 연산자
- 1개의 피연산자
-
++ / - - / + / -
- ++ / - - : 피연산자의 값 변경하는 암묵적 할당 (부수효과 O)
- 피연산자 앞 : 먼저 피연산자 값 증가/감소, 후 다른 연산
- 피연산자 뒤 : 먼저 다른 연산/ 후 ;
-
- : 숫자 타입이 아닌 피연산자에 사용 시, 숫자 타입으로 변환하여 반환 (피연산자 변경 X - 변환한 값을 생성 반환) (부수효과 X)
-
- : 부호를 반전한 값을 반환. + 숫자 타입 아니면 숫자 타입으로 변환, 반환 (피연산자 변경 X) (부수효과 X) EX) x = true; console.log(+x); ⇒1 x = false; console.log(+x); ⇒0 x = ‘Hello’; console.log(+x); ⇒ NaN -true; ⇒ -1
var x = "1"; // 문자열을 숫자로 타입 변환한다. console.log(+x); // 1 // 부수 효과는 없다. console.log(x); // "1" // 불리언 값을 숫자로 타입 변환한다. x = true; console.log(+x); // 1 // 부수 효과는 없다. console.log(x); // true // 불리언 값을 숫자로 타입 변환한다. x = false; console.log(+x); // 0 // 부수 효과는 없다. console.log(x); // false // 문자열을 숫자로 타입 변환할 수 없으므로 NaN을 반환한다. x = "Hello"; console.log(+x); // NaN // 부수 효과는 없다. console.log(x); // "Hello"
- ++ / - - : 피연산자의 값 변경하는 암묵적 할당 (부수효과 O)
3. 문자열 연결 연산자
- 피연산자 중 하나 이상이 문자열일 때 (개발자의 의도와 상관없이 엔진에 의해 암묵적으로 타입 변화) ex) 1 + true; ⇒2 / 1 + false; ⇒ 1 / 1 + null; ⇒1 / +undefined; , 1 + undefined; ⇒ NaN
7.2 할당 연산자
- 좌항 ← 우항 할당 (변수 값 변화 = 부수 효과 O)
- = += -= *= /= %=
- 할당문은 값으로 평가되는 포현식인 문 ⇒ 할당된 값으로 평가 (다른 변수에 할당 가능. 변수에 동일한 값을 연쇄 할당)
7.3 비교 연산자
- 좌항 우항 비교 → 불리언 값으로 반환
- 동등/일치 비교 연산자 (엄격성 정도 차이)
- 동등 비교 연산자 (== / !=) : 값만 비교 - 비교할 때 암묵적 타입 변환 EX) ‘0’ == ‘ ‘ ; ⇒ false / 0 == ‘ ‘ ; ⇒ true / false == ‘false’ ; ⇒ false (결과를 예측하기 어렵다. 동등 비교 연산자는 안 쓰는 게 좋음)
- 일치 비교 연산자 (=== / !==) : 값과 타입 주의) NaN === NaN; ⇒ false (NaN은 자기 자신과 일치하지 않는 유일한 값) 0 === -0; ⇒ true / 0 == -0; ⇒ true
- 대소 관계 비교 연산자 : < > >= <=
- 삼항 조건 연산자 : 조건식의 평가 결과에 따라 반환 값 결정
- 형식 : var result = score > 60 ? ‘pass’ : ‘fail’ ; (T 면 앞, F 면 뒤)
- 표현식인 문으로 값처럼 사용할 수 있다. (↔ if… else 문은 값처럼 X)
7.4 논리 연산자
-
(or) / && (and) / ! (not) - 논리합 연산자, 논리곱 연산자, 논리 부정 연산자 - 논리 부정 연산자 (!) ⇒ 불리언 값 반환 (피연산자 암묵적 타입 변환)
- 논리합, 논리곱은 어느 한쪽으로
7.5 쉽표 연산자
: 왼쪽부터 연산 진행. 마지막 피연산자의 평가 결과 반환
7.6 그룹 연산자
: () 괄호 → 우선순위 조절
7.7 typeof 연산자
: 데이터 타입을 문자열로 반환
- string, number, boolean, undefined, symbol, object, function (null 은 반환 x)
- typeof 연산자는 7개의 데이터 타입과 정확히 일치 X EX) typeof null ⇒ “object”
- null 확인 시에는 일치 연산자(===) EX) foo === null;
7.8 지수 연산자 (**)
- 좌항 밑, 우항 지수
- Math.pow(a, b) ⇒ a^b
- 음수를 거듭 제곱의 밑으로 쓰려면 괄호로 묶어야.
- **= (할당 연산자로) 가능
- 지수 연산자는 이항 연산자 중에서 우선순위 최우선
연산자의 부수 효과 : 할당 연산자 (=), 증가/감소 연산자(++/- -), delete 연산자
이 포스트는 모던 자바스크립트 Deep Dive를 공부하며 정리한 내용입니다.