스코프는 범위라는 뜻
전역변수란 window 객체에 변수를 만드는 것
스코프 때문에 지역변수는 아무리 해도 전역변수에 영향을 끼칠 수 없다
자바스크립트 변수의 범위를 호출한 함수의 지역 스코프부터 전역 스코프까지 점차 넓혀가며 찾는다
내부 함수에는 외부 함수의 변수에 접근 가능하지만 외부 함수에서는 내부 함수의 변수에 접근할 수 없다
모든 함수들은 전역 객체에 접근할 수 없다
스코프는 함수를 호출하 때가 아니라 선언할 때 생긴다, 정적 스코프라고 부른다
함수를 처음 선언하는 순간, 함수 내부의 변수는 자기 스코프로부터 가장 가까운 곳(상위 범위)에 있는 변수를 계속 참조한다
함수가 한 번 선언된 이상, 전역변수를 가리키게 되어있는 변수가 다른 걸 가리키게 할 수없다
유일한 방법은 전역변수를 다른 값으로 바꾸는 것다
같은 변수 이름을 사용해서 이전에 있떤 변수를 덮어쓰는 일이 벌어지지 않기 위해 사용하는 방법 중 하나
객체안에 키와 값으로 속성을 만들어 사용
var obj = {
x: 'local',
y: function() {
alert(this.x);
}
}
(function() {})();
모듈 패턴이라고도 하는데, 함수를 선언하자마자 바로 실행시켜버린다
이 구문은 라이브러리를 만들때 기본이다
비공개 변수가 없는 자바스크립트에 비공개 변수 기능을 만들어 주기 때문이다