본문 바로가기

학원/JavaScript

11장. 스코프

[ 목차 ]

1. 스코프란?

2. 자바스크립트 스코프의 특징

3. 암묵적 전역

4. 즉시실행함수

 

1. 스코프란?

1) 참조 대상 식별자를 찾아내기 위한 규칙

2) 참조 대상 식별자 : 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름

3) 자바스크립트를 비롯한 모든 프로그래밍 언어의 기본적 개념

4) 스코프가 없다면 같은 식별자 이름은 충돌을 일으키기 때문에 프로그램 전체에서 하나만 사용 가능

 

2. 자바스크립트 스코프의 특징

1) 대부분의 언어는 블록 레벨 스코프를 따르지만 자바스크립트는 함수 레벨 스코프를 따름

2) 함수 레벨 스코프 : 함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효하고 외부에서 참조 불가능

3) let 키워드를 사용해 블록 레벨 스코프 사용

 

3. 암묵적 전역

1) 선언되지 않은 식별자 y는 마치 선언된 변수처럼 동자하며 이는 선언되지 않은 식별자에 값을 할당하면 전역 객체의 프로퍼티가 되기 때문

2) foo 함수가 호출되면 변수 y값을 할당하기 위해 선언된 변수인지 확인하고, 이를 찾을 수 없기 때문에 오류가 나타나야 하지만 y20을 window.y = 20으로 해석하여 프로퍼티를 동적 생성하여 마치 전역 변수처럼 동작

3) y는 단지 전역 객체의 프로퍼티로 추가되었을 뿐 변수가 아니기 때문에 변수 호이스팅이 발생하지 않음

 

4. 즉시실행함수

1) 전역변수 사용을 억제하기 위해 사용

2) 즉시 실행함수는 즉시 실행되고 그 후 전역에서 바로 사라짐.