하나 이상의 표현식(=피연산자)를 대상으로 연산자를 수행하면 하나의 값을 만듭니다. 여기서 표현식(=피연산자)을 명사
라고 한다면, 연산자는 동사
라고 할 수 있습니다.
연산자의 종류로는 산술, 할당, 비교, 논리, 타입, 지수 연 등이 있습니다.
단항 산술 연산자 중에서 + 연산자는 피연산자중에서 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
단항 산술 연산자 중에서 + 연산자는 피연산자중 하나 이상이 문자열 or 숫자가 아닌 경우, 자바스크립트 엔진이 암묵적으로 타임을 자동 변환한다.
ture > 1
false > 0
null > 0
undefined > NaN (숫자로 타입 변환 안됨)
우항
에 있는 피연산자
의 평가 결과를 좌항
에 있는 변수
에 할당할당문이 표현식이기 때문에 다른 변수에 할당 할 수 있는데, 이를 활용하여
연쇄 할당
을 할 수 있다.let a, b, c; a = b = c = 0; //a는 0 으로 평가된다. //b는 0 으로 평가된다. //c는 0 으로 평가된다. ``
할당 연산자 | 설명 | 예시 |
---|---|---|
= | 값 할당 | x = 5 |
+= | 덧셈 후 할당 | x += 3 |
-= | 뺄셈 후 할당 | x -= 3 |
*= | 곱셈 후 할당 | x *= 3 |
/= | 나눗셈 후 할당 | x /= 3 |
%= | 나머지 연산 후 할당 | x %= 3 |
**= | 거듭제곱 후 할당 | x **= 3 |
<<= | 왼쪽 시프트 후 할당 | x <<= 3 |
>>= | 오른쪽 시프트 후 할당 | x >>= 3 |
>>>= | 부호 없는 오른쪽 시프트 후 할당 | x >>>= 3 |
&= | 비트 AND 후 할당 | x &= 3 |
|= | 비트 OR 후 할당 | x |= 3 |
^= | 비트 XOR 후 할당 | x ^= 3 |
둘은 엄격도의 정도가 다르다.
- 일치
비교 연산자는 엄격한 비교
(타입 비교)
- 동등
비교 연산자는 느슨한 비교
(암묵적 타입 변환 비교)
동등 비교 연산자는 편리해보이지만, 결과를 예측하기 어렵기 때문에 일치 연산자를 사용하는 것이 좋다.
🚫 주의해야 할 점 두가지
- 양의 0과 음의 0 모두 일치/동등 한다고 해석한다.
- NaN은 유일하게 자신과 일치하지 않는 값이다. => Number.isNaN()
을 사용해줘야함
ES6에서 도입된
Object.is 메서드
를 활용하면 정확한 비교 결과를 반환
연산자 | 설명 | 예시 |
---|---|---|
> | 크다 | x > y |
< | 작다 | x < y |
>= | 크거나 같다 | x >= y |
<= | 작거나 같다 | x <= y |
문
이고, 삼항 조건 연산자는 표현식
이다.let x = 10;
//불가능
let result = if(x%2) {result = '홀수';} else{result = '짝수';};
//가능
let result = x % 2 ? '홀수' : '짝수';
🔎 피연산자가 불리언 값이 아닐때
- 논리 부정은 암묵적 타입 변환
- 논리곱, 논리합은 단축 평가
🔎 드 모르간의 법칙
!(x || y) === (!x && !y)
!(x && y) === (!x || !y)
연산자 | 설명 | 예시 |
---|---|---|
&& | 논리곱 AND | x && y |
|| | 논리합 OR | x || y |
! | 논리부정 NOT | !x |
let x, y, z=;
x=1, y=2, z=3; //3
🚫 자바스크립트 버그!!
null은 일치 연산자를 확인하여 비교