function funcName(param1, param2) {
// 실행 내용
}
함수명 필수
호이스팅 발생 → 선언 이전에 호출 가능
const funcName = function(param1, param2) {
// 실행 내용
};
익명 함수 가능
호이스팅 안 됨 → 선언 이후에만 호출 가능
| 구분 | 선언식(Function Declaration) | 표현식(Function Expression) |
|---|---|---|
| 호출 시점 | 선언 전 호출 가능 | 선언 후 호출 가능 |
| 호이스팅 | O | X |
| 형태 | 이름 있는 함수 | 이름 없는(익명) 함수 가능 |
[함수 정의] → [함수 호출] → [실행] → [값 반환 (return)]
함수는 호출되기 전까지 메모리에 저장만 되어 있음
호출되면 실행(Invoking)되고 결과를 반환
return 키워드로 실행 결과를 반환
반환값이 없으면 undefined 반환
function add(a, b) {
return a + b;
}
선언된 함수를 호출해서 실행
함수 자체를 다른 함수의 매개변수로 넘기거나 반환할 수도 있음
function callAnother(fn) {
fn();
}
매개변수 개수와 인자 개수가 다르더라도 호출 가능
함수 내부에서 arguments 객체로 인자 접근 가능
ES6 이후 기본 매개변수(default parameter) 지원
function greet(name = 'Guest') {
console.log('Hello, ' + name);
}
const add = (a, b) => a + b;
더 간결한 함수 문법
this가 선언 당시의 스코프를 따른다 (lexical this)
forEach, map, filter, reduce, find, some, every 등
함수형 프로그래밍 스타일의 배열 처리
HTML 문서를 객체로 표현한 구조화 모델(Tree Structure)
문서(Document)의 각 요소를 객체(Object)로 다루어 조작 가능
상단의 document 객체를 통해 접근
[document]
└── [html]
├── [head]
└── [body]
├── [h1]
├── [div]
│ ├── [p]
│ └── [img]
└── [footer]
| 객체 | 설명 |
|---|---|
| window | 브라우저 전체 창 (최상위 객체) |
| document | 현재 웹 문서 (HTML 페이지) |
브라우저 최상위 객체
window 메서드
window는 생략 가능 (window.alert() → alert())
현재 브라우저에 로드된 HTML 문서를 나타냄
웹 페이지 요소에 접근/수정/삭제 가능
document.getElementById('id');
document.querySelector('.class');
document.querySelectorAll('div');
[접근 (Select)]
↓
[조작 (Manipulation)]
├── 생성(Create)
├── 추가(Append)
├── 수정(Update)
└── 삭제(Delete)
접근(Select): HTML 요소를 찾는다
생성(Create): 새 요소를 만든다
추가(Append): 문서 트리에 삽입한다
수정(Update): 기존 요소 속성 변경
삭제(Delete): 요소 제거
// 접근
const div = document.querySelector('div');
// 생성
const newElement = document.createElement('p');
newElement.textContent = 'Hello World!';
// 추가
div.appendChild(newElement);
// 수정
newElement.textContent = 'Updated Text';
// 삭제
newElement.remove();