inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 중고급: 엔진 핵심

6. Lexical Environment, var 키워드 문제와 해결, 동적 환경

use strict 없을때는 어떻게 동작하나요?

322

kimyongin

작성한 질문수 2

0

use strict 없이 var 사용하지 않고 변수 선언하면 identifier resolution은 ES3의 scope chain 방식으로 동작하게 되는건가요?

앞에서 execution context 구조 설명하실때 TBC 에 대해서 나왔는데, TBC에 글로벌오브젝트가 바인딩 되어 있으니까 TBC를 통해서 resolution을 하게 되나요? 그런데 따로 bind 설정을 해버리면 TBC를 이용하는건 안될것 같긴 한데요.

javascript

답변 4

2

김영보

첨언하면 이러한 스코프 설정을 Function 오브젝트를 생성할 때 한 번만 한다는 것입니다. 대부분 스코프가 같은데 함수를 호출할 때마다 매번 스코프를 만들면 처리 속도가 떨어집니다.

2

김영보

짐작하신 것과 비슷하며, 뒤에서 다룹니다. ES5에서는 기본적으로 scope chain이 아닌 정적 환경을 취합니다. 정적 환경도 scope chain과 구조적으로는 같은 개념입니다만 scope가 다릅니다. 정적 환경은 함수의 직계 라인에 속한 것만 스코프를 가져가려는 개념이고 scope chain은 모든 함수의 변수를 전부 하나의 오브젝트에 넣어 사용하는 개념입니다. 소스 파일에 500개 함수가 있다고 할 때, 모든 함수에서 선언한 변수를 하나의 오브젝트에 넣어 처리하려는 것이 scope chain 접근입니다. 따라서 무겁기도 하고 식별자 해결에도 시간이 걸릴 것입니다. 특히 다수 사용자의 요청을 처리해야 하는 Node.js와 때로는 몇 시간씩 실행하는 머신러닝/립러닝에서는 크게 차이가 나며 문제가 생길 수도 있습니다. 

0

kimyongin

답변 감사합니다.

위 답변에서 "동적으로 식별자를 해결" 이라고 하셨는데, scope chain 이 동적으로 동작 하는 것이기도 하거니와, 2분37초에 "scope chain 개념으로 가버려야 되잖아요?" 라고 말씀 하시는걸 봐서는 scope chain 으로 동작하는게 맞는것 같은데, 위 답변에서 scope chain 이라고 명확하게 답변을 안해주신걸 봐서는 어떤 이유가 있으신거죠?

질문을 하면서 자답을 해보자면,  ES5 스펙에 "10.2.3 The Global Envrioment"가 있는데 해당 부분에서 위 내용을 다루게 되는걸까요? 동적으로 처리하긴 하는데 어쨋든 스펙상 용어가 scope chain은 아닌거군요?

0

김영보

글로벌 변수가 됩니다. 함수 안의 변수로 정의되지 않으므로 정적이 아닌 동적이 됩니다. 그래서 별도의 구조(오브젝트)를 가져간 것입니다. 그 오브젝트에서는 이런 것을 반영해서 동적으로 식별자 해결을 하려는 의도입니다. 

getBook 실습 예제중 질문드립니다!

0

419

1

__proto__ 에 대해 질문드립니다

0

315

1

호이스팅 코딩시간 풀이

0

358

1

[코딩 시간] JS {name: value} 이해

0

340

1

[[Scope]] 와 [[Environment]]는 같은 개념인가요

0

345

0

slice

0

239

0

스코프가 뭔가요?

0

307

0

어려워요

0

255

0

강사님 변수이름에 get을 붙이는 이유를 알고싶습니다.

0

339

1

[정리 시간] 정확하게 이해했는지 확인 부탁드립니다.

0

300

0

스코프 질문

0

253

1

fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ

1

542

1

this binding 논리 질문입니다.

0

279

1

파라미터 값을 매핑할 때

0

251

0

ES6부터는 this 바인딩을 환경 레코드에서 참조한다고 들었습니다.

0

209

0

정리시간 입니다.

0

228

0

정리시간입니다.

6

269

0

정리 시간 입니다.

0

202

0

정리시간입니다.

6

227

0

코딩시간 입니다.

1

222

0

선생님 스코프 질문이 있습니다.

1

240

0

[정리시간] 해보았습니다!

0

175

0

선생님 질문있습니다!!

0

159

0

질문드려도 될까요 선생님..

0

216

0