Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Tags more
Archives
Today
Total
관리 메뉴

난 정말 최고야 멋있어

ydkjsy-scope-closures Chapter 4 본문

카테고리 없음

ydkjsy-scope-closures Chapter 4

n00bh4cker 2020. 11. 23. 13:42

Why Global Scope?

Q. 어떻게 JS 엔진에서 여러 JS 파일들이 런타임에 하나로 될까요??

1. es module import

2. bundler -> 합쳐주세용!

3. 전역

 

Where Exactly is this Global Scope

웹에서는 window 객체를 통해서

 

-글로벌을 섀도잉하는 글로벌???

프로퍼티를 직접적으로 명시 한 후에 글로벌한 let 을 만들게 된다면 

window.xxx 로 호출했을때 직접적으로 명시한 프로퍼티가 나오게 된다

let 은 그냥 가려지게 됨 ㅠㅠ,ㅠㅠㅠ

이걸 피하기 위해서 전역변수들은 항상 var 을 써서 선언을 하면 된다고 한다

 

-dom 전역

id 값이 유효한 문법적 이름을 가지고 있다면 lexical 변수가 생성된다고 한다

만약 그렇지 않다면 window 를 통해서 접근해야한다고 한다

근데 저자는 이런 전역변수들은 만들어진다고 해도 그냥 쓰지 말래유

 

- (window)name엔 뭐가 있니?

window.name 은 뭐든지 문자열로 만들도록 하는 게터/세터래요

그래서 

var name = 42;

console.log(name, typeof name) 

하면 42 string 이 나와요!! (왜냐면 window.name 은 이미 정해져있어서 섀도잉이 안일어난거에요)

(*근데 let name = 42 하고 typeof name 하면 number 나와요)

 

-Web Workers

웹워커는 메인 js 와 다르게 돌아가는 다른 js 쓰레드래요

아무래도 멀티쓰레드로 돌아가기 떔에 교착상태를 피하기 때문에 전역객체에 대한 제한들이 많대여

예를들면 DOM 전역객체엔 접근 못한다던가..

하튼 웹워커에선 self 를 통해서 글로벌객체의 레퍼런스에 접근할수있따고 합니다!!

근데 let 은 안되고 var 랑 function 은 가능!!

 

-DevTools/ REPL

슬로벌 스코프에서의 행동, 호이스팅, 블록스코핑 선언 요런것들은 좀 차이가 있ㅇ르수있대여

글로벌의 에뮬레이션이래요...=> JS Spec 과는 쫌 차이가 있을수 있대여

근데 대표적인 차이들을 설명을 안하네여;;

 

-ESM

es6에서 가장 짱짱기능 모듈기능 !!!!

export 를 해서 놓는다면 

파일 하나만 있을땐 별 차이 없겠찌만 ,, 파일이 여러개가 있는 상황에서는 조금 달라져요

global 이 module-global 이 되버리는거져..

근데 뭐 이것도 결국은 글로벌에서 내려오는 머 그런거라고 하네요;;

해석은 되는데 잘 이해가 안가서.. 패쓰

 

-Node

어음... 노드는 esm 방식말고도 common js 방식으로도 export 할수있따고 해여

글고 노드는 글로벌스코프가 실제론 아니래여

왜냐면 다 함수로 바꿔버리거든요 var 도 let 도..

그래서 function Module*module, require, __dirname){

///어쩌고 저쩌고

}

로 다 바꿔버려서 글로벌이 없대여

 

그러면 노드에서 찐 글로벌에 접근하려면??

global 을 통해서 접근하래요(이건 노드만의 특징)

 

Global This

Globally Aware

TBD...