스코프(Scope)란 식별자가 유효한 범위를 말합니다.
어렵게 말하기
스코프의 주요 규칙
var
을 사용해 선언한 변수는 함수 스코프를 가집니다. 생성된 함수 내에서만 사용할 수 있고, 함수 내부에서 선언된 것이 아니면 전역 범위를 가집니다.
중괄호 { } 사이의 범위를 가집니다. 즉 지역 변수(함수, 클래스)라고 할 수 있습니다.
중첨된 함수 그룹에서 내부 함수가 상위 범위의 변수 및 기타 리소스에 접근 할 수 음을 의미합니다.
var x = 1;
// 전역에서 first 선언
function first() {
var x = 10;
second();
}
// 전역에서 second 선언
function second() {
console.log(x);
}
first(); // 1
second(); // 1
이처럼 자바스크립트를 비롯한 대부분의 프로그래밍 언어는 렉시컬 스코프를 따릅니다.
있습니다! 동적 스코프는 정적 스코프(=렉시컬 스코프)와 달리, 함수를 어디서 호출했는지에 따라 함수의 상위 스코프를 결정합니다.
var x = 'foo';
function foo() {
var x = 'bar';
bar();
}
function bar() {
console.log(x);
}
foo();
bar();
console.log(x)를 가진 bar() 함수는 전역에서 선언되었습니다. 따라서 foo() 안에서 bar()이 호출되었지만, 변수 x의 스코프는 전역입니다!
따라서 결과는
foo
foo
가 출력됩니다.
TIL을 정리하다가 너무 많은 시간을 투자했다. 배보다 배꼽이 더 큰 느낌.. 앞으로는 30분 내외로 시간을 제한해서 작성해야겠다.
Weekly Mission의 모바일에 따른 반응형을 어떻게 해아할 지 걱정이었다. 하지만 팀원이 미디어 쿼리를 쓰면 된다고 조언해줘서 큰 도움이 되었다. 그치만, 있는 걸 가져다 써보기만 했지 제대로 공부해본 적이 없어서 걱정이 된다. 진도를 살짝 벗어나는 개념인데.. 반응형 퍼블리싱 강의를 듣고 미션을 시작할지 고민이 됐다. 결론은 내일 미디어 쿼리에 대해 공부 후 미션 완성하기가 목표이다!