티스토리 뷰

donaricano-btn
반응형

자바스크립트에서 제공하는 함수는 일종의 객체로 취급되는 특징이 있습니다.

 

함수는 코드에서 정의된 위치와 관계 없이 처음에 호이스트 되기 때문에 실행흐름과 상관없이 독립적이라고 할 수 있습니다.

 

그리고 함수는 자바스크립트에서 유일하게 scope 만듭니다.

자바스크립트에서 유효범위를 만드는 것은 함수가 유일합니다. 다른 블록은 유효범위로 인정되지 않습니다. 아래 코드에서 처럼 for 문 안에 선언한 i는 전역변수로 취급이 됩니다.

 

그리고 함수 안에 var 키워드를 사용하지 않고 만든 변수는 역시 전역변수로 취급되는 것을 유의해야 합니다.

함수 안에 var 키워드를 통해 만들어진 변수를 지역변수라고 합니다. 지역변수는 함수 안에서만 사용가능하고 함수 외부에서는 접근할 수 없습니다.

 

하지만 반대로 함수 안에서는 외부 변수에 접근이 가능합니다. 그런데 이때 지역변수 중 외부변수와 이름이 같은 것이 있다면 지역변수에 먼저 접근하게 됩니다.

자바스크립트는 함수 내부에 또 다른 함수를 선언할 수 있습니다. 당연히 유효범위도 계층적으로 쌓이게 됩니다.

 

함수 내부에 정의된 함수 안에서 외부함수의 지역변수들과 전역변수에 접근이 가능합니다.

그런데 내부 함수에서 외부 함수에 접근할 때 이미 외부함수의 실행이 끝나 버리면 콜스택에 외부함수와 외부함수의 변수들이 남아있지 않을 것입니다.

 

그래서 자바스크립트는 내부함수의 실행이 종료될 때 까지 외부함수의 변수들을 버리지 않고 저장해 둡니다.

 

이렇게 외부 함수에서는 내부함수의 변수에 접근할 수 없고, 내부 함수에서는 언제든 외부함수에 접근 가능한 성질을 클로저라고 합니다.

함수가 만들어질 때는 함수를 실행하는 객체를 가리키는 this 키워드가 함께 생기게 됩니다.

 

유의해야 할 것은 이 this 키워드가 가리키는 대상은 그 함수를 실행시킨 객체라는 것입니다.

마지막으로 자바스크립트 함수의 특징 중 하나는 인자를 선택적으로 전달할 수 있다는 것입니다.

 

함수에 정의된 인자 개수보다 더 많은 인자를 전달할 수도, 적은 인자를 전달할 수도 있습니다. 함수에는 arguments라는 배열이 존재하는데 이 곳에 전달된 인자들을 저장하게 됩니다.

반응형

'language > javascript' 카테고리의 다른 글

자바스크립트 모듈  (0) 2019.03.29
자바스크립트의 객체지향프로그래밍  (0) 2019.03.29
자바스크립트에서 예외처리  (0) 2019.03.29
자바스크립트의 데이터 타입  (0) 2019.03.29
자바스크립트 소개  (0) 2019.03.29
donaricano-btn
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함