범위라는 뜻으로 컴퓨터 공학, 자바스크립트에서는 변수의 유효범위를 의미
let name = '정코딩'; //전역 변수
function showName() {
let name = '정해커'; //지역 변수
}
let name = '정코딩';
function showName() {
//지역 스코프에서 새로운 변수로 선언
let name = '박해커'; // 지역 변수
console.log(name); // 두번째 출력
}
console.log(name); // 첫번째 출력 > 지역변수로 접근X
showName(); // 첫번째 출력 이후 실행
console.log(name); // 세번째 출력 > 지역변수로 접근X
// 정코딩
// 박해커
// 정코딩
let greeting = 'Hello';
// 여기서 부터
function greetSomeone() {
let firstName = 'Josh';
return greeting + ' ' + firstName;
} // 여기까지 지역(안쪽) 스코프
// 지역 스코프를 제외한 바깥쪽 스코프는 전역 스코프
console.log(greetSomeone()); //'Hello Josh'
console.log(firstName); // ReferenceError
for ( let i = 0; i < 5; i++) {
console.log(i); //다섯번 반복
}
console.log('final i:', i); //ReferenceError
// 블록 범위를 벗어나는 즉시 변수(i)를 사용할 수X
for ( var i = 0; i < 5; i++) {
console.log(i); //다섯번 반복
}
console.log('final i:', i); //5
// var 키워드는 for 문이 만들어낸 블록 스코프를 무시하고 함수 스코프만 따른다
'use strict'
입력스코프 : 선언되지 않은 변수를 찾을 때 안에서 바깥으로 순차적으로 찾아가는 것
함수명(); // === 함수를 실행해라 // ()은 실행 연산자
함수와 함수가 선언된 어휘적 환경의 조합
실행이 종료된 외부 함수의 변수에 계속해서 접근할 수 있는 내부 함수
자신을 내포하는 함수의 컨텍스트에 접근할 수 있는 함수
함수 안에 함수가 있는데 안쪽 함수가 실행 된 이후 바깥 함수의 매개변수에 리턴되는 것 (스코프 함수의 경우 전역 함수에서 선언한 변수는 지역 함수에 사용할 수 있지만 지역 함수에서 선언한 함수는 전역 함수에서 사용X)
모듈화에 적합
재사용상을 높여서 코드의 양을 줄임
이해 예시
let seenYet = function() {
//archive (안에서 리턴받음!!!)
let archive = {name: "kimcoding", age: 29):
return function(val) {
if(archive[val]) { // archive (외부로 리턴함!!!)
return true;
};
archive[val] = true; // archive (외부로 리턴함!!!)
return false;
};
};