🦄 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일 해결 못함. 😫
🌱 오늘의 생각
🔹
🔹
🌱 공부 중 참고 사이트
🔹
🔹
🌱 도움이 될 만한 사이트 추천쓰
🔹
🔹
🔹
🔹
'일상의 기록 > 🌷DAILY 회고록 : 코드스테이츠' 카테고리의 다른 글
[230307]23년 1회 정보처리기사 필기 합격_upload(230321) (0) | 2023.03.08 |
---|---|
🌷 [230303] ES6 주요 문법 ( spread /rest ) (0) | 2023.03.03 |
🌷[230302] 코드스테이츠 부트캠프 : 참조 자료형과 원시 자료형 (1탄) (0) | 2023.03.02 |
🌷[230224] 코드스테이츠 부트캠프 D+8 : 애증의 우분 (0) | 2023.02.24 |
🌷[230223] 코드스테이츠 부트캠프 D+8 (0) | 2023.02.23 |