참고: 이웅모 《모던 자바스크립트 Deep Dive》 7장 · MDN Expressions and operators
연산자는 “값과 값을 결합해 새 값을 내는 기호”로 시작했지만, 동등 비교·논리·지수·typeof까지 가면 언어 철학이 드러난다.
이 장은 산술부터 **, typeof, 쉼표까지 한 지도로 묶는다.
flowchart TB
OP[연산자] --> AR[산술]
OP --> AS[할당]
OP --> CMP[비교 ===]
OP --> LOG[논리 && || !]
OP --> SPEC[typeof ** ?: ,]
이항: + - * / %
단항: + - ++ --
console.log(5 % 2);
console.log(+'10');
let x = 1;
console.log(++x, x++);
+는 문자열 연결도 겸함(9).
= += -= *= … 할당은 표현식 — 값이 오른쪽(또는 연산 결과).
let a = 1;
a += 2;
let b, c;
b = c = 3;
느슨한 동등은 타입 변환 후 비교. 일치는 타입까지.
실무 기본 === / !==.
console.log(1 == '1'); // true
console.log(1 === '1'); // false
console.log(NaN === NaN); // false — Object.is / Number.isNaN
< > <= >= — 문자열은 유니코드 순서. 로케일 비교는 localeCompare.
const label = score >= 60 ? 'pass' : 'fail';
중첩 삼항은 가독성 해침 → if/lookup.