누구나 로고
Online CoursesFor BusinessLibraryTrend InsightsFree coursesNoticesContactCareers
모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.
로그인무료 회원가입
강좌자바스크립트 기초 30강 — 웹을 움직이는 언어5강

5강 / 전체 8강

연산자

12분 읽기 조회 0

산술·비교·논리·할당 연산자 전체와 == vs === 차이, 단축 평가, 옵셔널 체이닝까지 자바스크립트 연산자를 완전히 정복합니다.

🎯 학습 목표

이 강을 마치면 다음을 할 수 있습니다.

  • 산술, 비교, 논리, 할당 연산자를 올바르게 사용할 수 있습니다.
  • ==(동등)와 ===(일치)의 결정적 차이를 이해하고 항상 ===를 사용해야 하는 이유를 설명할 수 있습니다.
  • 논리 연산자의 단축 평가(Short-circuit Evaluation) 원리를 이해하고 실전에서 활용할 수 있습니다.
  • 증감 연산자와 복합 할당 연산자로 코드를 간결하게 작성할 수 있습니다.

➕ 산술 연산자

이 섹션에서는 숫자 계산에 사용하는 산술 연산자와 자바스크립트에서 주의해야 할 동작을 살펴보겠습니다.

산술 연산자는 수학 계산을 수행합니다. 기본 연산자는 다른 언어와 동일하지만, 자바스크립트만의 특이한 동작이 있으므로 주의가 필요합니다.

// 기본 산술 연산자
console.log(10 + 3);   // 13 — 덧셈
console.log(10 - 3);   // 7  — 뺄셈
console.log(10 * 3);   // 30 — 곱셈
console.log(10 / 3);   // 3.3333... — 나눗셈 (항상 소수 포함)
console.log(10 % 3);   // 1  — 나머지(모듈로)
console.log(2 ** 10);  // 1024 — 거듭제곱 (ES7)

// 주의: + 연산자는 문자열과 만나면 연결 연산
console.log("10" + 3);   // "103" — 문자열 연결!
console.log("10" - 3);   // 7    — 뺄셈은 숫자로 자동 변환
console.log(10 + "3");   // "103" — 앞쪽이 숫자여도 문자열 연결

나머지 연산자(%)는 처음에는 낯설지만 실전에서 매우 자주 사용됩니다. 짝수/홀수 판별, 배열을 순환하는 로직, 시간 계산(60초 = 1분) 등에 핵심적으로 활용됩니다. 예를 들어 n % 2 === 0이면 짝수, 1이면 홀수입니다.

증감 연산자는 변수의 값을 1씩 늘리거나 줄이는 데 사용합니다. 반복문과 함께 자주 쓰입니다.

let count = 5;

// 전위 증가: 먼저 증가시키고 값을 반환
console.log(++count);  // 6 (증가 후 반환)
console.log(count);    // 6

// 후위 증가: 현재 값을 반환하고 증가
let count2 = 5;
console.log(count2++); // 5 (반환 후 증가)
console.log(count2);   // 6

// 감소 연산자
let life = 3;
life--;  // 3 → 2
console.log(life); // 2

// 복합 할당 연산자 — 연산과 할당을 동시에
let score = 100;
score += 10;  // score = score + 10 → 110
score -= 20;  // score = score - 20 → 90
score *= 2;   // score = score * 2  → 180
score /= 3;   // score = score / 3  → 60
score %= 7;   // score = score % 7  → 4
console.log(score); // 4

복합 할당 연산자(+=, -=, *=, /=, %=)는 코드를 간결하게 만들어줍니다. score = score + 10보다 score += 10이 짧고 읽기 편합니다. 실무 코드에서 매우 자주 사용하므로 반드시 익혀두세요.

🔍 비교 연산자와 == vs ===

이 섹션에서는 두 값을 비교하는 연산자와, 자바스크립트에서 반드시 이해해야 하는 ==와 ===의 차이를 살펴보겠습니다.

비교 연산자는 두 값을 비교하여 true 또는 false를 반환합니다. 조건문(7강)의 핵심 재료입니다.

console.log(5 > 3);   // true  — 크다
console.log(5 < 3);   // false — 작다
console.log(5 >= 5);  // true  — 크거나 같다
console.log(5 <= 4);  // false — 작거나 같다

// 동등 연산자 (==) — 타입 변환 후 비교 (사용 자제!)
console.log(5 == "5");    // true  — 문자열 "5"를 숫자 5로 변환
console.log(0 == false);  // true  — false가 0으로 변환
console.log(null == undefined); // true
console.log("" == false); // true  — 빈 문자열과 false

// 일치 연산자 (===) — 타입과 값 모두 비교 (항상 이것을 사용!)
console.log(5 === "5");    // false — 타입이 다름 (number vs string)
console.log(0 === false);  // false — 타입이 다름
console.log(null === undefined); // false — 타입이 다름
console.log(5 === 5);     // true

// 불일치 연산자
console.log(5 != "5");    // false — == 기반, 타입 무시
console.log(5 !== "5");   // true  — === 기반, 타입 포함

==(동등 연산자)는 비교 전에 두 값의 자료형을 일치시키는 암묵적 형 변환을 수행합니다. 그 결과 0 == false가 true가 되는 등 직관적이지 않은 결과가 발생합니다. 이런 동작은 버그의 주요 원인입니다.

===(일치 연산자)는 값과 자료형을 모두 비교합니다. 형 변환 없이 있는 그대로 비교하므로 예측 가능하고 안전합니다. 자바스크립트에서는 항상 ===와 !==를 사용하는 것이 정석입니다. ==는 특별한 이유가 없다면 절대 사용하지 마세요.

비교== 결과=== 결과
5 == "5"truefalse
0 == falsetruefalse
null == undefinedtruefalse
"" == falsetruefalse
5 == 5truetrue

🔗 논리 연산자와 단축 평가

이 섹션에서는 여러 조건을 결합하는 논리 연산자와 자바스크립트에서 매우 유용한 단축 평가(Short-circuit Evaluation) 개념을 살펴보겠습니다.

논리 연산자는 불리언 값을 다루는 데 사용합니다. &&(AND), ||(OR), !(NOT) 세 가지가 있습니다.

// && (AND) — 둘 다 true일 때만 true
console.log(true && true);   // true
console.log(true && false);  // false
console.log(false && true);  // false

// || (OR) — 하나라도 true면 true
console.log(true || false);  // true
console.log(false || false); // false

// ! (NOT) — true ↔ false 반전
console.log(!true);   // false
console.log(!false);  // true
console.log(!0);      // true  — Falsy 값 반전
console.log(!"hi");   // false — Truthy 값 반전

// 실전 예시
let age = 20;
let hasId = true;
console.log(age >= 18 && hasId);  // true — 성인이고 신분증 있음

let isWeekend = false;
let isHoliday = true;
console.log(isWeekend || isHoliday);  // true — 주말이거나 휴일

자바스크립트 논리 연산자에는 강력한 특성이 있습니다. &&와 ||는 반드시 true/false를 반환하는 것이 아니라, 실제 피연산자 중 하나를 반환합니다. 이것이 단축 평가(Short-circuit Evaluation)입니다.

// && 단축 평가 — 앞이 Falsy면 앞 값, Truthy면 뒤 값 반환
console.log(0 && "hello");     // 0     — 앞(0)이 Falsy라 멈춤
console.log("hi" && "hello"); // "hello" — 앞이 Truthy라 뒤 반환
console.log(null && "hello"); // null  — null이 Falsy라 멈춤

// || 단축 평가 — 앞이 Truthy면 앞 값, Falsy면 뒤 값 반환
console.log("hi" || "기본값");  // "hi"    — 앞이 Truthy라 멈춤
console.log("" || "기본값");    // "기본값" — 앞(빈문자열)이 Falsy
console.log(null || "기본값");  // "기본값" — null이 Falsy

// 실전 활용: 기본값 설정
let userName = null;
let displayName = userName || "손님";  // userName이 null이므로 "손님"
console.log(displayName);  // "손님"

userName = "홍길동";
displayName = userName || "손님";  // userName이 있으므로 "홍길동"
console.log(displayName);  // "홍길동"

||의 단축 평가는 변수에 기본값을 설정할 때 매우 자주 사용됩니다. value || "기본값" 패턴은 value가 Falsy(null, undefined, 빈 문자열 등)이면 "기본값"을 사용하라는 의미입니다. 실무 코드에서 수없이 만나게 되는 패턴이니 반드시 익혀두세요.

ES2020에서는 더 정교한 연산자가 추가되었습니다.

// ?? (Nullish Coalescing) — null이나 undefined일 때만 기본값
let score = 0;
console.log(score || 100);  // 100 — 0이 Falsy라 기본값 반환 (의도치 않음!)
console.log(score ?? 100);  // 0   — 0은 null/undefined가 아니므로 그대로

let name = null;
console.log(name ?? "손님");  // "손님" — null이므로 기본값

// ?. (Optional Chaining) — 중간 값이 null/undefined면 undefined 반환
let user = null;
// console.log(user.name);  // ❌ TypeError
console.log(user?.name);    // undefined — 오류 없이 안전하게

??(Nullish Coalescing)는 ||와 비슷하지만, null과 undefined에만 반응합니다. 0이나 빈 문자열은 의미 있는 값으로 그대로 통과시킵니다. ?.(Optional Chaining)는 객체의 깊은 속성에 접근할 때 중간에 null이나 undefined가 있어도 오류 대신 undefined를 반환합니다. 14강 객체에서 더 깊이 다룹니다.

⚠️ 자주 하는 실수와 주의점

이 섹션에서는 연산자 사용 시 입문자들이 자주 겪는 실수와 혼동을 살펴보겠습니다.

=, ==, ===를 혼동하는 실수가 가장 흔합니다. =는 할당(오른쪽 값을 왼쪽 변수에 저장), ==는 값만 비교(타입 변환 포함), ===는 값과 타입 모두 비교입니다. 조건문 안에 if (x = 5)처럼 실수로 =를 쓰면 5를 x에 할당하고, 5는 Truthy이므로 조건이 항상 참이 됩니다. 이런 실수를 방지하기 위해 일부 개발자는 5 === x처럼 상수를 왼쪽에 쓰기도 합니다.

연산자 우선순위도 주의해야 합니다. 수학과 동일하게 곱셈·나눗셈이 덧셈·뺄셈보다 먼저 계산됩니다. 논리 연산자는 ! → && → || 순으로 우선순위가 높습니다. 헷갈릴 때는 괄호를 사용하면 항상 명확합니다.

// 우선순위 예시
console.log(2 + 3 * 4);       // 14 (곱셈 먼저)
console.log((2 + 3) * 4);     // 20 (괄호 먼저)

console.log(true || false && false);  // true (&& 먼저: false&&false=false, 그 후 true||false=true)
console.log((true || false) && false); // false (괄호 먼저: true, 그 후 true&&false=false)

NaN 비교 실수도 자주 발생합니다. NaN === NaN은 false이므로, NaN인지 확인하려면 Number.isNaN(value)를 사용해야 합니다. 4강에서 배운 내용이지만, 연산자와 함께 다시 한번 강조합니다.

📝 핵심 요약

5강에서 배운 내용을 정리해 보겠습니다.

연산자 종류연산자설명
산술+ - * / % **기본 수학 계산, +는 문자열 연결도 겸함
증감++ --값을 1씩 증가/감소, 전위(먼저)/후위(나중에) 구분
복합 할당+= -= *= /= %=연산과 할당을 한 번에
비교> < >= <=크기 비교, 결과는 boolean
동등== !=타입 변환 후 비교 — 사용 자제
일치=== !==타입+값 모두 비교 — 항상 이것 사용
논리&& || !AND/OR/NOT, 단축 평가로 실제 값 반환
Nullish??null/undefined일 때만 기본값 적용
옵셔널 체이닝?.중간 null/undefined 있어도 안전하게 접근

다음 강인 6강 — 문자열 다루기에서는 텍스트 데이터를 가공하는 강력한 문자열 메서드들을 배웁니다. slice, includes, replace, split 등 실무에서 매일 사용하는 메서드들을 예제와 함께 깊이 익혀보겠습니다!

관련 주제

  • 동등 vs 일치
  • == ===
  • 단축 평가
  • 옵셔널 체이닝
  • 증감 연산자
  • 복합 할당 연산자
  • 개발·프로그래밍
  • 개발·프로그래밍 강의
  • 자바스크립트 기초 30강 — 웹을 움직이는 언어
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나
이전 4강자료형다음 6강 문자열 다루기

댓글

0/1000

불러오는 중...

목차

  1. 1.자바스크립트란
  2. 2.실행 환경과 콘솔
  3. 3.변수 — let·const
  4. 4.자료형
  5. 5.연산자
  6. 6.문자열 다루기
  7. 7.조건문
  8. 8.반복문

Support

  • Notices
  • FAQ
  • Contact Us
  • Community

Help & Info

  • Terms of Service
  • Privacy Policy
  • Refund Policy

Services

  • About Us
  • Sign up
  • New courses
  • Free courses
누구나 로고
Terms of ServicePrivacy PolicyRefund Policy

상호명: NUGUNA  |  대표자: 정우진  |  사업자등록번호: 392-32-01817  |  통신판매업신고: 제 2026-서울양천-0564 호

주소: 서울특별시 양천구 목동서로 100  |  이메일: nugunapass@gmail.com  |  전화: 010-6395-3043

© 2026 NUGUNA. All rights reserved.

KB예금주인증관리자
HomeCoursesLibraryContactMY