Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 웹개발
- time()
- 함수중복
- 프로그래밍
- 생성자호출
- jQuery
- HTML
- 친구함수
- 객체지향프로그래밍
- SQL
- freiend선언
- 자바스크립트
- call by referance
- 함수표현식
- new연산자
- C++
- 연산자재정의
- this객체
- 자바스크립트라이브러리
- react
- 제네릭 함수
- friend함수
- 랜덤출력
- JS
- 테이블
- freiend클래스
- 코딩
- 멤버접근허용
- 데이터베이스
- C언어
Archives
- Today
- Total
Programming Storytelling
클로저(closure)란 무엇일까? 본문
클로저(closure)는 내부함수가 외부함수의 맥락에 접근할 수 있는 것을 가르킨다.쉽게 말해 함수 안에 함수를 또 선언 하는것이다. 우리가 대표적으로 알고 있는 함수표현식은 클로저나 콜백함수로 사용하기 쉽다는 장점이 있다.
이번 포스팅에서 그러한 사실에 대해서 함께 알아 보도록 하자.
function outter() {
function inner() {
var title = 'programming good';
alert(title);
}
inner();
}
이런식으로 함수안에 함수를 선언하면 그안에서만 특정함수를 사용 할 수 있다는 장점이 있다.즉, 내부함수가 외부함수에 접근을 할 수 있다는 뜻이다.그리고 클로저는 내부함수가 죵료된 뒤에도 외부함수를 통해 함수를 호출 할 수 있다는 큰 장점이 있다.
이제 클로저를 이용한 정확한 예제에 대해 살펴보도록 하자.
function movie(title) {
return {
get_title : function () {
return title;
}
set_title : function(_title){
title = _title
}
}
}
ghost =movie('Ghost in the shell');
matrix = movie('Matrix');
alert(ghost.get_title());
alert(matrix.get_title());
ghost.set_title('코딩코딩')
위 코드는 함수내부에서 객체를 반환하고 있는 대표적인 예시인 동시에 영화 이름을 여러방식으로 바꿔주는걸 보여주는 코드이다.
실행결과는 title값이 Ghost in the shell->Matrix->코딩코딩 순서대로 바뀔 것이다.
이 코드를 통해 동일한 외부안에서 만들어진 내부함수나 메소드는 외부함수의 지역변수를 통해 공유한다는 사실도 알 수 있을 것이다.그리고 클로저의 중요한 특징 중에 외부함수가 실행 될 때마다 새로운 지역변수를 포함하는 클로저를 생성시킨다는 사실도 기억하도록 하자.
'Javascript' 카테고리의 다른 글
this 객체의 메소드 호출과 생성자 호출 (0) | 2019.06.06 |
---|---|
JSON (JavaScript Object Notation)이란? (0) | 2019.06.05 |
자바스크립트(javascript)이벤트란? (0) | 2019.06.04 |
자바스크립트로 숫자 다루기 (0) | 2019.05.14 |