모던자바스크립트 13장 스코프

연호·2022년 12월 20일
0

모던자바스크립트

목록 보기
8/28

스코프

  1. 모든 식별자는 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다.
function add(x,y) {
  //매개변수는 함수 몸체 내부에서만 참조 가능
  console.log(x,y) // 2, 5
  return x + y;
}

console.log(x,y) // Reference Error
  1. 스코프는 자신이 선언된 위치에 의해 유효 범위, 스코프가 결정된다. 코드의 가장 바깥 영역에서의 스코프에서 만들어진 변수를 전역 변수라 한다. 전역 변수는 어디서든 참조가 가능하다. 함수 몸체 내부에서 선언된 지역 변수는 지역 스코프를 갖는다. 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다.
//전역 스코프, 전역 변수
var x = "Global X"
var y = "Global Y"

function outer() {
  
  //지역 변수, 지역 스코프
  var z = "local Z"
  console.log(x); //"Global X"
  console.log(y); //"Global Y"   상위 스코프의 변수 참조 가능
}

console.log(z); //Reference Error 전역에서 지역에서 사용한 변수 참조 불가능 
  1. 스코프는 함수의 중첩에 의해 계층적 구조를 갖고 이것이 연결 된 것을 스코프 체인이라 한다. 변수를 참조할 때 스코프 체인을 통해 해당 변수의 스코프에서 상위 스코프 방향으로 이동하며 변수를 검색한다.

  2. 상위 스코프에서 유효한 변수는 하위 스코프에서 자유롭게 참조가 가능하지만 반대는 불가능하다.

  3. 지역 스코프는 코드 블록이 아닌 함수에 의해서만 생성된다.

  4. 자바스크립트는 함수를 어디서 정의했는지에 따라 함수의 상위 스코프를 결정한다. 이를 렉시컬 스코프, 또는 정적 스코프라 한다.

var x = 1;
function foo() {
  var x = 10;
  bar ();
}

function bar () {
  console.log(x);
}

//bar 함수가 어디서 정의 되었는지에 따라 상위 스코프 결정. 

foo(); // 1
bar(); // 1
profile
뉴비

0개의 댓글