유효범위 관련 문제들

김동하·2021년 1월 30일
0

javascript

목록 보기
56/58

어떤 변수를 참조할까요

  • 먼저 선언+할당된 let이냐 함수 다음에 할당만 된 변수냐

The answer is: Pete.

A function gets outer variables as they are now, it uses the most recent values.
Old variable values are not saved anywhere. When a function wants a variable, it takes the current value from its own Lexical Environment or the outer one.

가장 최신의 변수를 참조한다고 한다.

어떤 변수가 사용 가능할까

  • 클로저니까 당연히 Pete, work 선언하면 함수 컨텍스트가 생성되는데 생성된 함수 컨텍스트 안의 변수 객체에서 name은 지역 변수 Pete를 참조한다!

정답

counter는 독립적일까?

왜 갑자기 한국어가 나오는지 모르겠지만 counter2 또 다른 함수 컨텍스트니까 독립적!!

얼럿창엔 0과 1 이 출력됩니다.
함수 counter와 counter2는 각각 다른 makeCounter 호출에 의해 만들어졌습니다.
두 함수는 독립적인 렉시컬 환경을 갖게 되므로 각 함수는 자신만의 count를 갖게 됩니다.

counter 객체

잘 동작합니다.
생성자 함수의 두 중첩 함수는 동일한 외부 렉시컬 환경에서 만들어졌기 때문에 같은 count 변수를 공유합니다.

if 안의 함수

에러가 발생합니다.
sayHi는 if문 안에서 정의했기 때문에, 오직 if문 안에서만 접근할 수 있습니다. if문 밖엔 sayHi가 없습니다.

오 이거는 몰랐네...

출처 : https://ko.javascript.info/closure

profile
프론트엔드 개발

0개의 댓글