참고: 이웅모 《모던 자바스크립트 Deep Dive》 7장 · MDN Expressions and operators

연산자는 “값과 값을 결합해 새 값을 내는 기호”로 시작했지만, 동등 비교·논리·지수·typeof까지 가면 언어 철학이 드러난다. 이 장은 산술부터 **, typeof, 쉼표까지 한 지도로 묶는다.

flowchart TB
  OP[연산자] --> AR[산술]
  OP --> AS[할당]
  OP --> CMP[비교 ===]
  OP --> LOG[논리 && || !]
  OP --> SPEC[typeof ** ?: ,]

7.1 산술

이항: + - * / % 단항: + - ++ --

console.log(5 % 2);
console.log(+'10');
let x = 1;
console.log(++x, x++);

+는 문자열 연결도 겸함(9).

7.2 할당

= += -= *= … 할당은 표현식 — 값이 오른쪽(또는 연산 결과).

let a = 1;
a += 2;
let b, c;
b = c = 3;

7.3 비교

== vs ===

느슨한 동등은 타입 변환 후 비교. 일치는 타입까지. 실무 기본 === / !==.

console.log(1 == '1'); // true
console.log(1 === '1'); // false
console.log(NaN === NaN); // false — Object.is / Number.isNaN

대소

< > <= >= — 문자열은 유니코드 순서. 로케일 비교는 localeCompare.

7.4 삼항 ?:

const label = score >= 60 ? 'pass' : 'fail';

중첩 삼항은 가독성 해침 → if/lookup.

7.5 논리