사용자 도구

사이트 도구


typescript:variable

문서의 이전 판입니다!


변수선언

var

var myVar = 100;
function myFunc() {
    var message = "Hello World";
 
    return message
}

JavaScript는 함수안에 다른 함수를 선언할 수 있습니다. 그러한 경우 내부 함수가 외부 함수가 가지고 있는 변수를 참조할 수 있습니다. 또한 JavaScript는 1급 함수(first-class function)를 지원합니다. 쉽게 말하면 JavaScript의 함수는 값의 의미로 사용될 수 있다는 것입니다. 함수가 값의 역할을 하다보니 다음과 같은 형태의 코드가 가능합니다.

  • 함수를 변수에 저장.
  • 함수를 다른 함수의 인자로 전달.
  • 함수를 다른 함수의 리턴값으로 사용.

위와 같은 형태의 함수를 이용할 때는 함수의 이름이 특별히 필요하지 않기 때문에 이런 함수는 특별히 이름을 명시하지 않고 사용합니다. 이런 함수를 우리는 익명함수( Anonymous function )라고 하죠. 다른 표현으로는 람다( Lambda )라고도 합니다.

function outerFunc() {
 
    var a = 100;
 
    return function() {
        var b = a + 100;
        return b;
    }
}
 
var myFunc = outerFunc();
console.log(myFunc());    // 200 출력

사실 위의 예제는 좀 이상합니다. 아니 많이 이상하죠.

다음과 같은

var myFunc = outerFunc();

코드에서 outerFunc()함수는 수행이 종료되었기 때문에 그 안에 선언된 변수 a는 사실 사용할 수 없어야 합니다. 우리가 익히 알고 있는 다른 프로그래밍 언어의 변수 scope 개념으로 본다면 말이죠.

하지만 JavaScript의 var 변수 scope는 좀 다릅니다. outerFunc() 함수의 호출이 끝났음에도 불구하고 a 변수값이 유지됩니다. 즉, outerFunc()에 대한 참조가 남아있는 한 메모리에 계속 유지하게 되는 구조입니다. ( outerFunc() 함수가 실행중인 상태로 간주한다는 의미이기도 합니다. ) 그렇기 때문에 위에서 myFunc()를 호출했을 때 a 변수를 이용할 수 있는 것입니다.

typescript/variable.1533309034.txt.gz · 마지막으로 수정됨: 2025/04/15 10:05 (바깥 편집)