F12를 눌러 개발자 도구의 콘솔을 확인하세요.
// var - 함수 스코프 (비권장)
var oldVar = "I'm var";
// let - 블록 스코프, 재할당 가능
let count = 0;
count = 1;
// const - 블록 스코프, 재할당 불가
const PI = 3.14159;
const person = { name: "홍길동" };
person.name = "김철수"; // 객체 속성은 변경 가능
// 기본 타입 (Primitive)
let str = "문자열"; // String
let num = 42; // Number
let float = 3.14; // Number (정수와 구분 없음)
let bool = true; // Boolean
let empty = null; // Null
let notDefined; // Undefined
let sym = Symbol("id"); // Symbol
let big = 9007199254740991n; // BigInt
// 참조 타입 (Reference)
let obj = { key: "value" }; // Object
let arr = [1, 2, 3]; // Array
let func = function() {}; // Function
// 산술 연산자
let a = 10, b = 3;
// +, -, *, /, %, **
// 비교 연산자
// ==, ===, !=, !==, <, >, <=, >=
// == vs === (타입 비교 차이)
// 논리 연산자
// && (AND), || (OR), ! (NOT)
// 삼항 연산자
let result = a > b ? "크다" : "작다";
// Nullish coalescing (??)
let value = null ?? "기본값";
// Optional chaining (?.)
let obj = { nested: { value: 42 } };
let safe = obj?.nested?.value;
// if-else
if (조건1) {
// 실행
} else if (조건2) {
// 실행
} else {
// 실행
}
// switch
switch (값) {
case 'A':
break;
case 'B':
break;
default:
break;
}
// for
for (let i = 0; i < 5; i++) { }
// while
while (조건) { }
// do-while
do { } while (조건);
// for...of (배열 순회)
for (const item of array) { }
// for...in (객체 키 순회)
for (const key in object) { }
// forEach, map, filter, reduce
// 함수 선언식
function greet(name) {
return `Hello, ${name}!`;
}
// 함수 표현식
const greet = function(name) {
return `Hello, ${name}!`;
};
// 화살표 함수
const greet = (name) => `Hello, ${name}!`;
// 기본 매개변수
const greet = (name = "Guest") => `Hello, ${name}!`;
// Rest 파라미터
const sum = (...numbers) => numbers.reduce((a, b) => a + b, 0);
// 콜백 함수
setTimeout(() => console.log("1초 후"), 1000);
const fruits = ["사과", "바나나", "오렌지"];
// 기본 메서드
fruits.push("포도"); // 끝에 추가
fruits.pop(); // 끝에서 제거
fruits.unshift("딸기"); // 앞에 추가
fruits.shift(); // 앞에서 제거
// 고차 함수
const numbers = [1, 2, 3, 4, 5];
numbers.map(n => n * 2); // [2, 4, 6, 8, 10]
numbers.filter(n => n > 2); // [3, 4, 5]
numbers.find(n => n > 2); // 3
numbers.reduce((acc, n) => acc + n, 0); // 15
numbers.every(n => n > 0); // true
numbers.some(n => n > 4); // true
// 객체 리터럴
const person = {
name: "홍길동",
age: 25,
greet() {
return `안녕하세요, ${this.name}입니다.`;
}
};
// 속성 접근
person.name; // 점 표기법
person["age"]; // 대괄호 표기법
// 구조 분해 할당
const { name, age } = person;
// 스프레드 연산자
const newPerson = { ...person, city: "서울" };
// Object 메서드
Object.keys(person); // ["name", "age", "greet"]
Object.values(person); // ["홍길동", 25, ...]
Object.entries(person); // [["name", "홍길동"], ...]
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound.`;
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name);
this.breed = breed;
}
speak() {
return `${this.name} barks!`;
}
}
const dog = new Dog("멍멍이", "진돗개");
// math.js
export const PI = 3.14159;
export function add(a, b) { return a + b; }
export default class Calculator { }
// main.js
import Calculator, { PI, add } from './math.js';
import * as math from './math.js';
모듈은 서버 환경에서만 동작합니다.