참고 자료 :
코드스테이츠
스코프의 의미와 적용 범위를 이해할 수 있다 ㅇ
스코프의 주요 규칙을 이해할 수 있다 ㅇ
중첩 규칙
block scope와 function scope ㅇ
전역 스코프와 지역 스코프 ㅇ
전역 변수와 지역 변수간의 우선 순위 ㅇ
let, const, var 의 차이 ㅇ
전역 객체(window)의 이해
각 상수나 변수등의 요소들이 허용된 영역, 범위
지역(local scope) > 전역(global scope)
내부에서 값을 찾는 경우 지역스코프(내부스코프 -> 외부스코프) -> 전역스코프 순으로 값을 찾는다.
내부에서는 외부에 접근할 수 있지만 외부에서는 내부에 접근할 수 없다.
선언시 할당을 함께 해줘야 한다. 재할당 불가능. 재선언 불가능. 블록 스코프. 호이스팅 되지만 초기화가 안되기 때문에 사용할 수 없다.
선언과 할당을 따로 할 수 있다. 재할당 가능. 재선언 불가능. 블록 스코프. 호이스팅 되지만 초기화가 안되기 때문에 사용할 수 없다.
선언과 할당을 따로 할수 있다. 재할당 가능. 재선언 가능. 함수 스코프. 호이스팅 되고 사용 할 수 있다.
var는 함수 스코프라서 언어의 자유도가 높다. 사용시 편리하지만 오류가 나서 찾아야 할때 (디버깅) 힘들기 때문에 권장되지 않는다. 자바스크립트에서 선언 없이 변수를 할당할 경우 var로 선언한 전역 변수처럼 취급 된다.
스트릭 모드는 브라우저가 보다 엄격하게 작동하도록 만들어준다. '선언 없는 변수 할당'의 경우를 에러로 판단해 실행 시키지 않는다. js파일 상단에 'use strict'를 입력해서 사용할 수 있다.
클로저 함수의 정의와 특징에 대해서 이해할 수 있다
클로저가 갖는 스코프 범위를 이해할 수 있다
클로저를 이용해 유용하게 쓰이는 몇 가지 코딩 패턴을 이해할 수 있다
클로저는 '외부함수의 변수를 사용할 수 있는 내부함수'라고 정의 할 수 있다. 함수를 리턴하는 함수가 클로저의 형태를 만든다. 일반적인 함수는 함수 실행이 끝나고 나면 함수 내부의 변수를 사용 할 수 없다. 그러나 클로저는 외부함수의 실행이 끝나더라도, 외부 함수 내 변수가 메모리 상에 저장된다. 그리고 그 데이터를 스코프 안에 가두어 둔 채로 계속 사용할 수 있게 된다.
클로저 예시
const closer = function(x) {
return function(y) {
return x + y
}
}
const add5 = closer(5)
add5(7) === 5+7 = 12
add5(10) === 5 +10 = 15
변수 add5에는 클로저를 통해 리턴한 함수가 담겨 있다. add5는 closer함수에서 인자로 넘긴 5라는 값을 외부함수의 실행이 끝났음에도 x변수에 계속 담은 채로 남아있다.