📗
TIL
  • About
  • javascript
    • GoodParts
      • 프로토타입 방식
      • RegexComponent
      • 재귀적 호출 (Recursive Call)
      • 객체를 기술하는 객체
      • 예외 (Exception)
      • 호출
      • 문자열 (Strings)
      • 참조 (Reference)
      • 배열의 특성들
      • 숫자 (Numbers)
      • 메모이제이션 (Memoization)
      • 모듈 (Module)
      • 열거 (Enumeration)
      • 정규 표현식
      • 정규 표현식 객체 생성
      • 프로토타입 (Prototype)
      • 콜백 (Callback)
      • 문장 (Statements)
      • 함수 표현식 요약
      • 의사 클래스 방식 (Pseudoclassical)
      • 함수를 사용한 방식
      • 클로저 (Closer)
      • 배열 (Array)
      • 기본 타입에 기능 추가
      • 자바스크립트 분석
      • 인수 배열(arguments)
      • Function
      • 유효범위(Scope)
    • YouDon'tKnowJS
      • 타입
      • Native
      • 명시적 강제변환
      • 문자열
      • 함수 vs 블록 스코프
      • 클로저
      • 배열
      • 숫자
      • 연산자 우선순위
      • 스코프
      • 암시적 강제변환
      • 래퍼
      • Statement
      • 호이스팅
      • Coercion
    • javascript
Powered by GitBook
On this page

Was this helpful?

  1. javascript
  2. GoodParts

유효범위(Scope)

  • 프로그래밍 언어에서 유효범위는 변수와 매개변수의 접근성과 생존 기간을 제어한다

  • 유효범위는 이름들이 충돌하는 문제를 덜어주고 자동으로 메모리를 관리하기 때문에 중요하다

var foo = function() {
  var a = 3, b = 5;

  var bar = function() {
    var b = 7, c = 11;

    // 이 시점에서 a는 3, b는 7, c는 11
    a += b + c;

    // 이 시점에서 a는 21, b는 7, c는 11
  };

  // 이 시점에서 a는 3, b는 5, c는 정의되지 않음
  bar();

  // 이 시점에서 a는 21, b는 5
};
  • 자바스크립트의 블록 구문은 마치 블록 유효범위를 지원하는 것처럼 보이지만 불행히도 블록 유효범위가 없다

  • 대신 자바스크립트는 함수 유효범위가 있다. 즉 함수 내에서 정의된 매개변수와 변수는 함수 외부에서는 유효하지 않다

  • 반면에 이렇게 내부에서 정의된 변수는 함수 어느 곳에서도 접근할 수 있다

  • 자바스크립트는 블록 유효범위를 지원하지 않기 때문에 함수에서 사용하는 모든 변수를 함수 첫 부분에 선언하는 것이 최선이다

PreviousFunctionNextYouDon'tKnowJS

Last updated 4 years ago

Was this helpful?