티스토리 뷰
5.1 함수 개요
▲ 함수 : 코드의 집합, 모든 프로그래밍 언어에서 중요한 부분
var 함수 = function () { }; //익명 함수
function () { }; //선언적 함수
▲ 익명 함수 : 함수가 이름을 가지고 있지 않음
▲ 선언적 함수 : 함수가 이름을 가지고 있음
▲ 익명 함수와 선언적 함수의 차이점 : 두 가지 방법 모두 함수를 생성하는 방법이나, 약간의 차이가 있다.
익명 함수는 변수로 함수를 선언하기 때문에, 함수 출력의 순서가 중요함.
그러나 선언적 함수는 웹 브라우저가 먼저 읽기 때문에, 함수 출력의 순서가 중요하지 않음.
코드 5-1. 함수의 생성과 출력
<script>
var 함수 = function () {
var output = prompt('숫자를 입력해주세요', '숫자');
alert(output);
};
alert(함수);
</script>
<코드설명> function(){ } 형태는 함수지만, 이름을 가지고 있지 않으므로 익명 함수 라고 부름. 이름이 없기 때문에 변수에 넣어서 사용해야함. 반대로 이름을 가지고 있는 함수를 선언적 함수 라고 부름.
코드 5-3. 함수의 호출
<script>
// 함수 만들기
var 함수 = function () {
var output = prompt('숫자를 입력해주세요.', '숫자');
alert(output);
};
//함수 호출
함수();
</script>
<코드설명> function(){ } 형태는 함수지만, 이름을 가지고 있지 않으므로 익명 함수 라고 부름. 이름이 없기 때문에 변수에 넣어서 사용해야함
5.2 선언적 함수
▲ 선언적 함수
function 함수() {
}
코드 5-4. 선언적 함수의 재정의 (1)
<script>
function 함수() {alert('함수 A'); }
function 함수() {alert('함수 B'); }
함수();
</script>
<코드설명> 이름이 같은 함수를 두개 만들고, 함수를 호출했을 때 둘 중 어떤 함수가 실행되는가? => 뒤에 위치하는 함수가 실행됨
코드 5-5. 익명 함수의 재정의 (1)
<script>
var 함수 = function() {alert('함수 A'); }
var 함수 = function() {alert('함수 B'); }
함수();
</script>
<코드설명> 5-5는 5-4와 유사한 코드. 변수는 같은 이름으로 다시 선언하면 기존의 변수를 덮어 씌우므로 뒤쪽에 있는 변수를 사용하게 됨. 따라서 5-4, 5-5 모두 뒤에 위치한 함수가 이전에 선언한 함수를 덮어씌운 것.
코드 5-6. 익명 함수의 재정의 (2)
<script>
함수();
var 함수 = function() {alert('함수 A'); }
var 함수 = function() {alert('함수 B'); }
</script>
<코드설명> 위의 코드는 오류가 발생해 실행되지 않음. 변수를 선언하기 이전에 변수를 사용했기 때문.
코드 5-7. 선언적 함수의 재정의 (2)
<script>
함수();
function함수() {alert('함수 A'); }
function함수() {alert('함수 B'); }
</script>
<코드설명> 익명 함수와 달리, 선언적 함수를 사용하면 정상적으로 코드가 실행됨. 웹 브라우저는 script 태그 내부의 내용을 한 줄 한 줄 읽기 전에 선언적 함수를 읽음. 따라서 5-7은 첫째 줄부터 실행하는 것이 아니라 둘째 줄 → 셋째줄 → 첫째줄의 순서로 실행됨. 따라서 함수();는 문자열 '함수 B'를 출력함
'Language > JavaScript' 카테고리의 다른 글
자바스크립트 Template literal (0) | 2023.04.18 |
---|---|
Chapter 05 함수 - 매개 변수와 리턴값 (0) | 2023.04.07 |
Chapter 04 반복문 - break 키워드 / continue 키워드 (0) | 2023.03.27 |
Chapter 04 반복문 - 중첩 반복문 (0) | 2023.03.27 |
Chapter 04 반복문 - for in 반복문 (0) | 2023.03.27 |
- Total
- Today
- Yesterday
- 프로그램
- 리스트연산자
- 자료형
- 문자열함수
- java.time.package
- 순환할당
- StringBuilder 클래스
- 리스트
- 딕셔너리
- 함수
- Pattern 클래스
- StringTokenizer 클래스
- 요소선택
- FALSE
- 포장 클래스
- IndexError
- 스레드 스케줄링
- Format 클래스
- not_in
- StringBuffer 클래스
- 역반복문
- 파이썬
- Arrays 클래스
- python
- Objects 클래스
- Date 클래스
- 기본 API 클래스
- Random 클래스
- Calendar 클래스
- Math 클래스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |