산술·비교·논리·할당 연산자의 동작 원리를 정확히 이해하고, 단축 평가·옵셔널 체이닝·널 병합 연산자 등 현대 자바스크립트에서 자주 쓰이는 패턴을 익힌다.

연산자 전체 지도

자바스크립트 연산자는 크게 산술, 비교, 논리, 할당, 기타로 나뉩니다. 문법 자체보다 각 연산자의 실제 반환값과 부수 효과를 이해하는 것이 핵심입니다.

산술 연산자

// 기본 사칙연산
10 + 3   // 13
10 - 3   // 7
10 * 3   // 30
10 / 3   // 3.3333... (정수 나눗셈 없음!)
10 % 3   // 1  (나머지)
10 ** 3  // 1000 (거듭제곱, ES2016)

// 문자열과의 연산
"5" + 3    // "53" (연결)
"5" - 3    // 2    (숫자 변환)
"5" * "2"  // 10

// 증감 연산자 — 위치가 중요
let a = 5;
console.log(a++); // 5 (반환 후 증가)
console.log(a);   // 6
console.log(++a); // 7 (증가 후 반환)

// 나머지 연산자 활용
const isEven = n => n % 2 === 0; // 짝수 판별
const minutes = 90 % 60;          // 30 (90분 → 30분 남은 시간)

비교 연산자

// 값 비교
5 > 3     // true
5 >= 5    // true
5 < 3     // false
5 <= 4    // false

// 일치 연산자 (항상 === 사용!)
5 === 5   // true
5 === "5" // false (타입 다름)
5 !== "5" // true

// 문자열 비교 — 유니코드 순서
"apple" < "banana"   // true
"Z" < "a"            // true (대문자가 소문자보다 앞)
"100" < "9"          // true! (문자열이므로 "1" < "9")

논리 연산자 — 반환값을 이해하라

논리 연산자는 boolean을 반환하는 것이 아니라 피연산자 중 하나를 반환합니다. 이 특성이 단축 평가의 핵심입니다.

// && (AND) — 첫 falsy 값 반환, 모두 truthy면 마지막 값
true && true     // true
"hello" && 42    // 42  (앞이 truthy면 뒤 반환)
null && "hello"  // null (앞이 falsy면 앞 반환)
0 && "hello"     // 0

// || (OR) — 첫 truthy 값 반환, 모두 falsy면 마지막 값
false || true    // true
null || "hello"  // "hello" (앞이 falsy면 뒤 반환)
"hi" || "bye"    // "hi" (앞이 truthy면 앞 반환)
0 || ""          // "" (모두 falsy, 마지막 반환)

// ! (NOT) — boolean으로 변환 후 반전
!true    // false
!0       // true
!!"hi"   // true (이중 부정으로 boolean 변환)

단축 평가 (Short-circuit Evaluation)

논리 연산자는 결과가 확정되는 순간 나머지를 평가하지 않습니다. 이를 활용하면 간결한 코드를 작성할 수 있습니다.

// && 활용: 조건부 실행
const user = { name: "Kim", isAdmin: true };
user.isAdmin && console.log("관리자입니다"); // 실행됨
null && console.log("실행 안 됨");           // 실행 안 됨

// || 활용: 기본값 제공 (ES5 방식)
function greet(name) {
  const displayName = name || "방문자";
  console.log("안녕하세요, " + displayName + "!");
}
greet("Kim");  // "안녕하세요, Kim!"
greet();       // "안녕하세요, 방문자!"
greet(0);      // "안녕하세요, 방문자!" — 0도 falsy라 문제 발생!

널 병합 연산자 ?? (ES2020)

||의 문제점을 해결합니다. nullundefined일 때만 오른쪽을 반환합니다.

null ?? "기본값"      // "기본값"
undefined ?? "기본값" // "기본값"
0 ?? "기본값"         // 0  (0은 유효한 값!)
"" ?? "기본값"        // "" (빈 문자열도 유효!)
false ?? "기본값"     // false

// 실용 예시: 점수 0도 유효하게 처리
const score = 0;
const display1 = score || "점수 없음"; // "점수 없음" (잘못됨!)
const display2 = score ?? "점수 없음"; // 0 (올바름)

옵셔널 체이닝 ?. (ES2020)

중첩 객체에 접근할 때 중간에 null/undefined가 있어도 에러 없이 undefined를 반환합니다.

const user = {
  name: "Kim",
  address: {
    city: "Seoul"
  }
};

// 기존 방식 — 길고 번거로움
const city = user && user.address && user.address.city;

// 옵셔널 체이닝
const city2 = user?.address?.city;     // "Seoul"
const zip = user?.address?.zipCode;    // undefined (에러 없음)
const phone = user?.contact?.phone;    // undefined (contact 없어도 안전)

// 메서드 호출에도 사용
user?.sendEmail?.();  // sendEmail이 없어도 안전

// 배열 인덱스에도 사용
const users = null;
users?.[0]?.name;    // undefined (에러 없음)

// ?? 와 조합
const city3 = user?.address?.city ?? "도시 정보 없음";

할당 연산자

let x = 10;
x += 5;   // x = x + 5 = 15
x -= 3;   // x = x - 3 = 12
x *= 2;   // x = x * 2 = 24
x /= 4;   // x = x / 4 = 6
x **= 2;  // x = x ** 2 = 36
x %= 7;   // x = x % 7 = 1

// 논리 할당 연산자 (ES2021)
let a = null;
a ||= "기본값";  // a가 falsy면 할당 → a = "기본값"
a &&= "새값";    // a가 truthy면 할당 → a = "새값"
a ??= "또다른값"; // a가 null/undefined면 할당

삼항 연산자

// 기본 구조: 조건 ? 참일때 : 거짓일때
const age = 20;
const status = age >= 18 ? "성인" : "미성년자";
console.log(status); // "성인"

// 중첩 사용 (3단계 이상은 가독성 해침)
const score = 75;
const grade = score >= 90 ? "A"
            : score >= 80 ? "B"
            : score >= 70 ? "C"
            : "F";
// → "C"

비트 연산자 — 실무 활용 패턴

// 정수 변환 (Math.floor 대신)
~~3.9    // 3  (이중 비트 NOT)
3.9 | 0  // 3  (OR 0)

// 2의 배수 체크
8 & (8 - 1) === 0  // true (8은 2의 거듭제곱)
6 & (6 - 1) === 0  // false

연산자 우선순위 핵심만

// 높음 → 낮음 (주요 부분)
// () > 단항(!, ++, --) > ** > *, /, % > +, - > 비교 > == > && > || > ?? > 삼항 > 할당

// 괄호로 의도를 명확하게 표현하는 것이 최선
const result = (a + b) * c; // 더하기 먼저라는 의도 명확
const isValid = (age > 0) && (age < 150); // 각 조건 명확

관련 검색어  ·  자바스크립트 연산자, 단축 평가, 옵셔널 체이닝, 널 병합 연산자, 삼항 연산자, 논리 연산자 반환값

채용정보
공지사항
인사이트
MY