본문 바로가기
  • 코딩, 허쌤이 떠먹여 줄게
FrontEnd/Javascript

5장. 연산자

by 허쌤 2026. 1. 6.

5장. 연산자

연산자란?

연산자(Operator)는 하나 이상의 값을 연산하여 새로운 값을 만드는 기호입니다. 자바스크립트는 다양한 연산자를 제공합니다.


1. 산술 연산자 (Arithmetic Operators)

수학적 계산을 수행하는 연산자입니다.

기본 산술 연산자

let a = 10;
let b = 3;

console.log(a + b);   // 13 (덧셈)
console.log(a - b);   // 7 (뺄셈)
console.log(a * b);   // 30 (곱셈)
console.log(a / b);   // 3.333... (나눗셈)
console.log(a % b);   // 1 (나머지)
console.log(a ** b);  // 1000 (거듭제곱, ES6+)

증감 연산자 (Increment/Decrement)

let x = 10;

// 후위 증가 (Post-increment)
console.log(x++);  // 10 (출력 후 증가)
console.log(x);    // 11

// 전위 증가 (Pre-increment)
let y = 10;
console.log(++y);  // 11 (증가 후 출력)
console.log(y);    // 11

// 후위 감소 (Post-decrement)
let z = 10;
console.log(z--);  // 10 (출력 후 감소)
console.log(z);    // 9

// 전위 감소 (Pre-decrement)
let w = 10;
console.log(--w);  // 9 (감소 후 출력)
console.log(w);    // 9

2. 할당 연산자 (Assignment Operators)

변수에 값을 할당하는 연산자입니다.

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 %= 4;            // x = x % 4 (2)
x **= 3;           // x = x ** 3 (8)

console.log(x);    // 8

3. 비교 연산자 (Comparison Operators)

두 값을 비교하여 불린 값을 반환합니다.

동등 연산자

// == (느슨한 비교, 타입 변환 후 비교)
console.log(10 == '10');    // true (타입 변환)
console.log(10 == 10);      // true
console.log(null == undefined); // true

// === (엄격한 비교, 타입과 값 모두 비교) - 권장
console.log(10 === '10');   // false (타입이 다름)
console.log(10 === 10);     // true
console.log(null === undefined); // false

// != (느슨한 비교, 같지 않음)
console.log(10 != '10');    // false

// !== (엄격한 비교, 같지 않음) - 권장
console.log(10 !== '10');   // true

⚠️ 중요: ===!== 사용을 권장합니다!

대소 비교 연산자

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

문자열 비교

console.log('apple' < 'banana');  // true (사전 순서)
console.log('a' < 'A');          // false (대문자가 먼저)
console.log('10' > '2');         // false (문자열 비교)

4. 논리 연산자 (Logical Operators)

불린 값을 다루는 연산자입니다.

AND 연산자 (&&)

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

// 실용적인 예제
let age = 20;
let hasLicense = true;

if (age >= 18 && hasLicense) {
    console.log('운전 가능');
}

OR 연산자 (||)

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

// 실용적인 예제
let isWeekend = false;
let isHoliday = true;

if (isWeekend || isHoliday) {
    console.log('휴일입니다');
}

NOT 연산자 (!)

// true를 false로, false를 true로
console.log(!true);   // false
console.log(!false);  // true

// 실용적인 예제
let isLoggedIn = false;

if (!isLoggedIn) {
    console.log('로그인이 필요합니다');
}

단락 평가 (Short-circuit Evaluation)

// && 연산자: 첫 번째가 false면 두 번째 평가 안 함
let result1 = false && console.log('실행 안 됨');

// || 연산자: 첫 번째가 true면 두 번째 평가 안 함
let result2 = true || console.log('실행 안 됨');

// 기본값 설정
let name = '';
let displayName = name || '익명';  // '익명'
console.log(displayName);

5. 삼항 연산자 (Ternary Operator)

조건에 따라 값을 선택하는 연산자입니다.

// 형식: 조건 ? 값1 : 값2
let age = 20;
let status = age >= 18 ? '성인' : '미성년자';
console.log(status);  // '성인'

// 중첩 사용
let score = 85;
let grade = score >= 90 ? 'A' : 
            score >= 80 ? 'B' : 
            score >= 70 ? 'C' : 'F';
console.log(grade);  // 'B'

6. 타입 연산자

typeof 연산자

console.log(typeof 10);           // "number"
console.log(typeof 'hello');      // "string"
console.log(typeof true);         // "boolean"
console.log(typeof undefined);    // "undefined"
console.log(typeof null);         // "object"
console.log(typeof {});           // "object"
console.log(typeof []);           // "object"
console.log(typeof function(){}); // "function"

instanceof 연산자

let arr = [1, 2, 3];
let obj = {};

console.log(arr instanceof Array);   // true
console.log(obj instanceof Object);  // true
console.log(arr instanceof Object);  // true

7. 연산자 우선순위

여러 연산자가 함께 사용될 때 실행 순서를 결정합니다.

// 괄호가 가장 높은 우선순위
let result1 = (10 + 5) * 2;      // 30
let result2 = 10 + 5 * 2;        // 20

// 연산자 우선순위 (높은 순서대로)
// 1. 괄호 ()
// 2. 증감 연산자 ++, --
// 3. 곱셈, 나눗셈, 나머지 *, /, %
// 4. 덧셈, 뺄셈 +, -
// 5. 비교 연산자 <, >, <=, >=
// 6. 동등 연산자 ==, ===, !=, !==
// 7. 논리 AND &&
// 8. 논리 OR ||
// 9. 할당 연산자 =, +=, -= 등

우선순위 예제

let a = 10;
let b = 5;
let c = 2;

let result = a + b * c;        // 20 (곱셈 먼저)
let result2 = (a + b) * c;    // 30 (괄호 먼저)
let result3 = a > b && b > c; // true (비교 먼저, 그 다음 AND)

8. 문자열 연산자

연결 연산자 (+)

let str1 = 'Hello';
let str2 = 'World';

console.log(str1 + ' ' + str2);  // "Hello World"

// 숫자와 문자열
console.log('10' + 5);           // "105" (문자열 연결)
console.log(10 + '5');           // "105" (문자열 연결)
console.log('10' - 5);           // 5 (숫자 연산)

연산자 종합 예제

// 산술 연산
let a = 10;
let b = 3;
console.log(a + b);   // 13
console.log(a % b);   // 1

// 할당 연산
let count = 0;
count += 5;           // count = 5
count++;              // count = 6

// 비교 연산
let age = 20;
console.log(age >= 18);        // true
console.log(age === 20);       // true

// 논리 연산
let hasLicense = true;
let isAdult = age >= 18;
console.log(hasLicense && isAdult);  // true

// 삼항 연산
let status = age >= 18 ? '성인' : '미성년자';
console.log(status);  // '성인'

// 복합 연산
let score = 85;
let grade = score >= 90 ? 'A' : 
            score >= 80 ? 'B' : 'C';
console.log(grade);  // 'B'

주의사항

1. == vs ===

// == (느슨한 비교) - 사용 지양
console.log(10 == '10');        // true (타입 변환)
console.log(null == undefined); // true

// === (엄격한 비교) - 권장
console.log(10 === '10');        // false
console.log(null === undefined); // false

2. NaN 비교

let result = 'hello' - 5;
console.log(result === NaN);        // false (주의!)
console.log(isNaN(result));         // true
console.log(Number.isNaN(result));  // true (권장)

3. 부동소수점 연산

console.log(0.1 + 0.2);  // 0.30000000000000004 (미세한 오차)

// 해결 방법
let sum = (0.1 * 10 + 0.2 * 10) / 10;
console.log(sum);  // 0.3

4. 문자열과 숫자 연산

console.log('10' + 5);    // "105" (문자열 연결)
console.log('10' - 5);    // 5 (숫자 연산)
console.log('10' * 5);    // 50 (숫자 연산)
console.log('10' / 5);    // 2 (숫자 연산)

연습 문제

  1. 산술 연산

    • 두 수를 변수에 저장하고, 합, 차, 곱, 나눗셈, 나머지를 계산하세요.
  2. 비교 연산

    • 나이를 변수에 저장하고, 18세 이상인지 확인하는 코드를 작성하세요.
  3. 논리 연산

    • 점수가 60점 이상이고 출석률이 80% 이상일 때 합격으로 판단하는 코드를 작성하세요.
  4. 삼항 연산

    • 점수에 따라 등급을 부여하는 코드를 작성하세요 (90점 이상 A, 80점 이상 B, 그 외 C).
  5. 복합 연산

    • 초기값이 0인 변수를 만들고, 5를 더한 후 2를 곱한 결과를 출력하세요.

다음 장 예고

다음 장에서는 조건문(if, else, switch)에 대해 학습합니다.

'FrontEnd > Javascript' 카테고리의 다른 글

7장. 반복문  (0) 2026.01.07
6장. 조건문  (0) 2026.01.06
3장. 변수와 상수  (0) 2026.01.05
4장. 데이터 타입  (0) 2025.12.30
2장. 자바스크립트 실행 환경  (0) 2025.12.30