일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Hitit
- 이종호
- 개발자
- HTML
- queue
- Svelte
- 리액트
- react
- 비동기
- 리액트 예제
- hokeys
- hokidoki
- 스위프트
- javascript
- 자스민
- 계명대
- 스벨트
- 자바스크립트
- IOS
- 개발
- 호키스
- 힛잇
- SWIFT
- TDD
- 호키도키
- 계명대 이종호
- jest
- 자료구조
- data structure
- 자바스크립트 자료구조
Archives
- Today
- Total
Dog foot print
[javascript] 클로저와 스코프 정리 본문
새해 첫 포스트이다. 최근 여자친구와의 이별문제와 헤이해버려진 기강 상태로 포스팅을 안 하였다.
이번 포스팅은 최근 자스민을 가르쳐주며 스코프와 클로저를 나름 정리하여 핸드북 형태로 볼 수 있게 한 내용이다.
정리
스코프 클로저 정리
//스코프란 ? 특정 위치에서 접근 할 수 있는 함수, 변수 등의 군락을 일컷는다.
//전역 스코프란 ? 현재 있는 자바스크립트가 실행하고 있는 위치(함수,블럭) 바깥에 있는
//스코프를 일컫는다. 전역변수와 비슷한 내용이며 변수, 함수 등을 포함하기에 좀 더 넓은 의미 .
let global = "i'm global";
//지역 스코프란 ? 블럭스코프, 함수스코프가 있으며 함수와 블럭 내부에서만 접근 가능한
//변수, 함수 등의 군락을 일 컫는다. 지역변수와 비슷한 내용이며 , 변수, 함수 등을 포함 하기에 좀 더 넓은 의미
{
let local = "i'm local";
//local변수는 현재 이 블락에서만 유효하며 블락 외부에서는 접근 불가능
}
function localFunc(){
let local = "i'm local";
//local변수는 현재 이 함수에서만 유효하며 블락 외부에서는 접근 불가능
}
//로컬 변수는 지역변수이자, 지역 스코프를 가졌기에 아래 콘솔 로그는 유효하지 않다.
// console.log(local);
//블락은 어느언어에서나 스코프를 구분 짓기 위해 사용하는 것이다. 함수, 반복문, 제어문 등
if(10 < 20){
let answer = true;
}else{
let answer = false;
}
// answer는 블락 내부에서 선언되었기에 지역 스코프를 가진다. 아래 콘솔로그는 유효하지 않다.
// console.log(answer);
//var는 global 스코프를 가진다. 그렇기에 블락 스코프는 적용되지 않으며, 두번 선언시
//제일 나중에 선언된 var 변수가 기존 var 변수의 내용을 덮어쓴다.
var globalScope = "hello";
{
var globalScope = "hi";
}
console.log(globalScope) // hi가 출력된다.
//함수스코프는 가능하다.
function change(){
var globalScope = "third";
}
change()
console.log(globalScope)
//클로저란 함수를 특정스코프에서 정의하여 , 함수를 특정 스코프로 접근 할 수 있게 하는 것
let globalFunc;
{
//globalFunc는 변수 password에 접근 불가능
let password = "1234";
//globalFunc에 함수를 할당 함으로 password에 접근 하도록 클로저를 형성
globalFunc = function(setPasswrod){
console.log(password);
password = setPasswrod;
console.log(password);
}
}
globalFunc("4242")
globalFunc("1234")
//스코프 중첩이란 ? 함수 스코프나 블럭 스코프가 여러겹 중첩되어 스코프를 공유하는 상태를 말한다.
{
const b = 20
{
const a = 20
{
console.log(a);
console.log(b);
}
}
}
//변수 숨김이란 ? 스코프가 중첩되어있는 경우 최상위 스코프에 있는 변수,함수 를 중간 층에서
//또 선언되어 최상위 스코프에 있는 변수,함수를 못쓰는 경우
{
const a = 30
{
const a = 20
{
//이 스코프에서는 a가 30이라고 되어있는 변수에 접근 불가능
console.log(a);
}
}
}
//동적 스코프 . 함수를 호출 하는 위치에 따라 스코프가 변하는 것
function lookAround(){
//현재 위치에서는 a변수가 없다.
console.log(a);
console.log("look around")
}
{
var a = 20;
lookAround();
}
{
var a = 30;
lookAround();
}
반응형
'Javascript' 카테고리의 다른 글
[javascript] 심심해서 만들어본 잔돈 교환 함수(coin-change function) (0) | 2020.05.08 |
---|---|
[javascript] 이미지 불러오기 (1) | 2020.01.22 |
[javascript] 선택정렬 (0) | 2019.12.27 |
[javascript]quick-sort - ver2 (median, left, right)pivot (0) | 2019.11.29 |
[javascript] 우선순위 큐, heap (2) (0) | 2019.08.09 |
Comments