일상의 기록/🌷DAILY 회고록 : 코드스테이츠

🌷[230302] 코드스테이츠 부트캠프 : 스코프와 클로저 (2탄)_[FAILED]

감귤밭호지차 2023. 3. 2. 11:16

🦄 03월 02일 배운 수업에 이어 스코프와 클로저를 공부해봅니다. 

 

➡️ [230302] 코드스테이츠 부트캠프 : 참조 자료형과 원시 자료형 (1탄)

 


 

 

🌷햇깔렸던 부분들 + TIP🌷

 

💠스코프 (SCOPE)

 = 변수에 접근할 수 있는 범위 

Ex. 함수 안 : 안쪽 스코프   / 함수 밖 : 바깥쪽 스코프

 

[예시 1] 

# Error가 발생한 두 번째 출력 문( firstName ) : 함수 안쪽 스코프에서 정의 

    →  함수 밖에서 접근 불가

 

 

[예시2]

# 함수 안( IN )의 출력 문 : 변수 message" 함수 안 " 에서 선언 되었기 때문에 바깥 쪽 스코프 :  "name" 끌어올 수 있었음 

    →  정상적으로 출력 가능 

 

함수 밖( Out )의 출력 문 : message 변수가 함수 안 스코프에서 선언되었기 떄문에 바깥에서 접근 불가 

   →  에러 발생.

 

 

💡바깥쪽 스코프에서 선언한 변수는 안쪽에서 사용 가능 

💡안쪽 스코프에서 선언한 변수는 바깥쪽에서 사용 불가 

💡맨 바깥 스코프는 : Global scope (전역 변수 ) else,., local scope(지역 변수)

 

 

💠스코프의 종류 + var/let/const

# 블록 스코프 : 중괄호 { } 로 둘러싸인 범위 

                           * 화살표 함수도 포함

 

# 함수 스코프 : 함수로 둘러싸인 범위  

                           * function 키워드를 사용해야 함수 스코프 

 

 

# var 키워드 : 블록 스코프 무시 ( 전역 GLobal에서 사용 가능 / 함수 스코프 영향 받음 ) 

                          * 화살표 함수의 블록 스코프는 무시하지 않음 

                          * var 무한 재선언 가능 : 추후 변수 혼동 올 수 있음 

                          * window 객체에 속함 

 

# let 키워드 : 블록/함수 스코프의 영향을 받음 ( 지역 변수에서 선언 되면 지역 변수 내에서만 사용 가능 )

                          * let 키워드 사용 권장 : 재선언 방지 

                          * 선언 키워드 없는 선언은 최고 스코프에 선언 

 

# const 키워드 : 값이 변하지 않는 상수 정의 ( 블록/함수 스코프 영향 받음 ) 

                          * 값을 새롭게 할당할 일이 없다면 const 키워드 사용하세용. 

                          * 값 재할당 시 TypeError 발생 

 

 

💡실수를 줄이기 위해 "use strict" ;  모드를 사용합시다 

     * 선언 없는 변수 할당은 전역 변수로 취급하지만 다른 부수적인 영향을 끼칠 수 있음 :  use strict 모드 사용 권장 

 


💠클로저(Closure)

 = 함수가 최초 선언되었던 환경을 기준으로 접근할 수 있는 변수가 정해진다. 

 

= 내부내부 함수에서 사용되어 선언된 변수는, 내부내부 함수가 포함된 내부 함수가 바깥쪽에서 접근하고 선언되어도 사용 가능. 

 

* 내부 함수에서는  내부내부 함수의 변수 접근 불가 

 

 

 

함수가 선언 된 어휘적 환경(lexical) JS는 함수가 호출 되는 환경과 별개로 기존에 선언되어 있던 환경 ( 어휘적 환경)을 기준으로 변수를 조회하려고 함. - 외부 함수의 변수에 접근할 수 있는 내부 함수 를 클로저 함수라고 함. 

 

# 클로저는 자신이 생성될 때의 환경을 기억하는 함수  

# 클로저는 함수와 그 함수 주변의 상태의 주소 조합 

- 클로저는 함수와 그 함수가 접근할 수 있는 변수의 조합 

# 클로저의 함수는 어디에서 호추로디느냐와 무관하게 선언된 함수 주변 환경에 따라 접근할 수 있는 변수가 정해짐. 

 

 

➡️ 

23년 02월 16일 해결 못함. 😫

 


🌱 오늘의 생각                                               

🔹

🔹

 

🌱  공부 중 참고 사이트                                   

🔹

🔹MDN [ 클로저 ] 

🔹생활코딩 [ 클로저란 ]

🔹

 

🌱 도움이 될 만한 사이트 추천쓰                     

🔹

🔹

🔹

🔹