함수 스코프

var, let, const 모두 변수를 선언하는 키워드이다. let과 const는 ES2015(ES6)에서 등장했으며 여러가지 다른 특성을 갖는다. var let const 유효 범위(스코프 범위) Function Scope Block Scope Block Scope 재할당 가능 가능 불가능 재선언 가능 불가능 불가능 1. 스코프 규칙 스코프에 관한 글 var는 함수 스코프를 갖는다. 하지만, let과 const는 블록 스코프를 갖는다. 1-1 var var 키워드는 함수 스코프(Function Scope)이다. 이는 생성된 함수 스코프 내에서만 사용할 수 있으며, 외부에 선언된 경우는 전역 범위를 갖는다. var age = 24; function foo () { var name = "JuHyeon" ..
클로저란? 클로저는 함수가 속한 렉시컬 환경을 기억해서 함수가 렉스컬 스코프 밖에서 실행될 때에도 함수가 속한 스코프에 접근할 수 있게 하는 기능을 말한다. function foo() { var a = 2; function bar(){ console.log(a); // 2 } return bar; } var func = foo(); func(); GC(Garbage Collector)가 foo()의 참조를 없앨 것 같지만, bar()가 해당 스코프에 있는 a를 참조하기 때문에 없애지 않는다. 그러므로 스코프 외부에서 bar()가 실행되면 스코프를 기억하고 있기에 2가 출력된다. 이때, 클로저는 bar()에서 발생하며, 이는 스코프 외부에서 foo()의 스코프안에 있는 bar()를 참조하기 때문이다. 다시..
58청춘
'함수 스코프' 태그의 글 목록