티스토리 뷰

TIL

[TIL] 190722

수박소바 2019. 7. 23. 01:06
반응형

오늘 한 일

  • 파이썬 문법 공부 (반복문, 조건문, 함수) - 파이썬은 불필요한 중괄호, 대괄호 등을 거의 생략하는 편인것 같다. 그래서 더 헷갈림...
  • 자바스크립트 노랭이책 [7장 함수 표현식] 절반 정독.
  • 프로젝트 단위 실습을 못해서 (github에) commit을 못했다. 앞으로 1일 1커밋 실천해서 풀밭을 만들어야 겠다.

공부 내용

파이썬 반복문은 while 또는 for문. for문은 for i in (배열이름) 또는 for i in range(2, 7) (range() 함수는 2부터 6까지 배열 생성해줌)

파이썬 조건문은 if a > b: elif a < b: else 이런 식으로 괄호없이 조건문 뒤에 콜론(:)을 넣고 그 뒤에 중괄호도 생략하는 듯?

파이썬 함수 정의는 def exampleFunction() {} 식으로 앞에 함수명 앞에 'def' 키워드로 선언한다.

 

함수 표현식

자바스크립트에서 함수를 정의하는 방법은 함수 선언함수 표현식이 있다.

/* 함수 선언 (Hoisting으로 인해 정상 작동) */

sayHello();

function sayHello() {
	alert("Hello");
}


/* 함수 표현식 (에러 발생) */

sayHello();

var sayHello = function() {
	alert("Hello");
}

자바스크립트 인터프리터가 코드를 읽을 때, 함수 선언한 부분을 호출보다 먼저 읽고 실행하기 때문에 호이스팅(Hoisting)이 발생하여 호출한 코드보다 나중에 함수 선언을 해도 정상적으로 작동한다. 그러나 함수 표현식의 경우 값을 할당하는 것과 같기 때문에 함수를 정의하기 전에 호출하면 에러가 발생한다.

함수 표현식을 사용하면 리턴값으로 함수를 반환하거나 매개변수로 넘기는 등 일반 값처럼 쓰일 수 있다.

 

클로저

클로저란 다른 함수의 스코프에 있는 변수에 접근 가능한 함수를 말한다.

내부 함수는 외부 함수의 변수 객체에 접근 가능하며, 전역 변수 객체에 도달할 때 까지 내부 함수의 스코프 체인에 계속 포함시킨다.

즉, 함수가 호출되면 실행 컨텍스트스코프 체인 객체가 생성되는데 스코프 체인의 첫번째 값은 해당 함수의 활성화 객체가 할당되고 그 다음은 외부 함수의 활성화 객체, 그리고 그 다음... 쭉쭉쭉 해서 포함관계가 전역에 도달할 때 까지 스코프 체인이 이어진다. 그렇기 때문에 클로저는 외부 함수의 변수에 접근이 가능한 것이다.

이를 통해 알 수 있는 점은, 보통 함수의 경우 실행이 끝나면 활성화 객체가 파괴되는데 비해, 클로저의 경우 외부함수의 실행이 끝나더라도 클로저가 외부함수의 활성화 객체를 모두 참조하고 있기 때문에 메모리에 계속 남아 있게 된다. (메모리 낭비 위험이 있음) 메모리를 회수 하려면 클로저 실행이 끝난 뒤 null을 할당하여 모든 참조를 없앨 수 있다.

 

느낀점

파이썬은 알고리즘 공부를 위해 문법만 간략히 익히려고 시작한건데 생각보다 의외의 문법이 많아서 러닝커브가 조금 있을 것 같다. 알고리즘 문제 풀 때는 익숙한 언어로 짜는게 좋을것 같지만 그래도 일단 시작한거니 계속 해보려고 한다.

자바스크립트 책을 오랜만에 폈는데 벼르고 벼르던 클로저가 나와서 반가웠다. (진작 읽어볼껄...)

인터넷으로 백날 검색했을 때 보다는 훨씬 이해 잘됐는데 막상 글로 쓰려니 막히는 부분이 많다. 내부 구조를 완벽하게 알기란 멀고도 험하다. 그래도 이제 어느정도 감이 잡히고 클로저를 한마디로 정의한다면? 하는 질문에 시원하게 대답할 수 있을 것 같다.

"다른 함수의 스코프에 있는 변수에 접근 가능한 함수입니다!"

반응형

'TIL' 카테고리의 다른 글

[TIL] 190725  (0) 2019.07.26
[TIL] 190724  (0) 2019.07.25
[TIL] 190720  (0) 2019.07.21
[TIL] 190718  (0) 2019.07.19
[TIL] 190717  (0) 2019.07.18
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함