'스코프'에 해당되는 글 1건

  1. 2017.09.15 [자바스크립트] 스코프 관련

- 한 마디로 생명주기라고도 하기도 한다.

- 변수와 상수, 매개변수가 언제, 어디서 정의되는지를 결정하는 요소.

- 함수의 매개변수가 함수 바디 안에서만 존재하는 것도 스코프의 일종.

- 함수를 실제 호출하기 전까지는 함수의 매개변수가 존재하지 않음.

- 함수를 호출할때마다 매개변수가 나타나고, 함수가 제어권을 반환하면(종료되면) 

- 변수가 존재하지 않으면 그 변수는 '스코프 안에 있지 않음'

- 즉, 아직 선언하지 않은 변수, 함수가 종료되면서 존재하지 않게 된 변수는 '스코프 안에 있지 않음'

- 무엇인가 존재하지 않는다고 해도 곧바로 메모리를 회수하지는 않음

- 유지할 필요가 없다고 표시하면, 가비지 컬렉션 프로세서에서 메모리를 회수함.

- 가비지 컬렉션은 자동으로 일어나므로 프로그래머가 신경 쓸 필요는 없다.


- 프로그램 소스 코드는 정적인 구조지만, 실제 실행하면 실행 흐름은 이곳 저곳으로 움직임.


정적 스코프


- 어떤 변수가 함수 스코프 안에 있는지 함수를 정의할 때 알 수 있다는 뜻.(호출할 때 알 수 있는 것X)

- 함수는 자신이 정의될 때 접근할 수 있었던 식별자에는 여전히 접근할 수 있지만,

- 호출할 때 스코프에 있는 식별자에는 접근이 불가함.

- 정적 스코프는 전역 스코프, 블록 스코프, 함수 스코프에 적용됨.


1) 전역 스코프


- 프로그램이 시작할 때 암시적으로 주어지는 스코프가 필요한데 이 스코프를 전역 스코프라 부름.

- 즉, 자바스크립트가 실행되고 어떤 함수도 호출되지 않았을 때 실행 흐름은 전역 스코프에 있음.

- 즉, 전역 스코프에서 선언된 것은 무엇이든 해당 프로그램의 모든 스코프에서 접급이 가능함.

- 전역 스코프에서 선언된 것들을 전역 변수라고 부름.

- 전역 스코프를 남용하는 것은 모든 스코프에서 보이기 때문에 반드시 자제하고, 충분한 고려가 필요.

- 전역 변수가 변수만을 의미하는 것이 아님. 변수, 함수, 객체등을 모두 총칭하는 것.

- 전역 변수는 남용하면 안됨. 변수보다는 단일 객체에 저장할 것.


2) 블록 스코프


- let과 const는 블록 스코프에서 선언함.

- 블록 : 중괄호{}로 묶은 부분. 

- 블록 스코프는 그 블록의 스코프에서만 보이는 식별자를 의미함.

- 보통 if나 for같은 제어문의 일부분으로 블록을 사용하지만 블록만 사용하는 독립 블록도 유효한 문법.

- 독립 블록은 필요하지도 않고 단독으로는 쓸모가 별로 없다.

- 블록 안에 내부 블록을 만들면, 동일한 변수를 생성해도 다른 변수이므로 외부 스코프의 변수를 

  숨기기가 가능한 효과.

-


Posted by sungho88
,